Ключ ввода NeoVim coc.nvim не работает для автозаполнения

Недавно я переписал файл конфигурации NeoVim со сценария vim на lua , и все работает нормально, но у меня есть одна проблема. Когда я использую coc.nvim для автозаполнения и выбираю что-то, нажимаю Enter, NeoVim создает новую строку и не выполняет автозаполнение. Я нашел там решение , но только для Vim Script. Как я могу сделать это в NeoVim Lua?

      inoremap <expr> <CR> pumvisible() ? "\<C-Y>" : "\<CR>"

3 ответа

Это довольно просто, вам просто нужно добавить:

      inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm() : "\<CR>"

вам нужно поместить эту строку внутрьinit.lua

Однако если вы используете пакет автоматического сопряжения (https://github.com/windwp/nvim-autopairs ) с COC, это не сработает.

чтобы проверить, будет ли это работать или нет, просто запустите

      :verbose imap <CR> 

после установки и настройки вашего пакета

Если там ничего нет, вы можете пойти и использовать мой образ, который я предоставил. Если существует какая-либо карта клавиш, которая уже привязана к CR (что означает ввод, кстати), вам придется переназначить ее в пакете или использовать другой ключ, чем ввод.

В моем случае автоматическое сопряжение Windwp принимает клавишу ввода, что приводит к ошибке.

Решение — использовать автопару COC. просто беги:CocInstall coc-pairsи ты готов идти.

Думаю, я найду решение!

Если вы устанавливаете плагин через упаковщик, в вашем init.lua напишите:

      require('nvim-autopairs').setup{
  map_cr = false,
}

Я надеюсь, что это сработает для вас

Вы можете сделать это, добавив это в свой init.lua

      vim.fn.nvim_command('inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm() : "\\<CR>"')
Другие вопросы по тегам