Ключ ввода 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>"')