В качестве предисловия: я не программист, но я написал небольшую оболочку для автоматизации некоторых задач.
Это происходит на MacOS Mojave, но это не должно иметь большого значения, поскольку конфигурации neovim должны быть перенесены.
Я заметил, что когда я пытаюсь использовать функцию автодополнения coc, нажатие Enter просто возвращает на следующую строку, а не выбирает автодополнение. Я подозревал, что это связано с vimwiki или markdown. Я посмотрел наэта темачтобы попытаться найти конфликтующую комбинацию клавиш, и я получил это на выходе :verbose imap <cr>
после попытки автодополнения:
i <CR> &@<C-]><Esc>:VimwikiReturn 1 5<CR><SNR>38_AutoPairsReturn
Last set from ~/.config/nvim/plugged/auto-pairs/plugin/auto-pairs.vim line 662
i <CR> * pumvisible() ? "\<C-Y>" : "\<CR>"
Last set from ~/.config/nvim/init.vim line 225
Press ENTER or type command to continue
Итак, я посмотрел auto-pairs.vim
и нашел вот это:
execute 'inoremap <script> <buffer> <silent> <CR> .old_cr.'<SID>AutoPairsReturn'
Мне кажется, что он имеет приоритет над переназначением в init.vim
:
inoremap <expr><cr> pumvisible() ? "\<C-y>" : "\<CR>"
Я пытался выяснить, где pumvisible()
находится эта функция, но не смог найти ее определения. Я подумал, что могу остановить привязку в автопарах, сделав что-то с этим. Затем я попытался изменить переназначение в init.vim
. Это ничего не дало, я изменил <cr>
на <Space>
и <Right>
, но это имело эффект домино, заставив мои клавиши со стрелками работать как ввод при любых обстоятельствах.
Как исправить этот конфликт? Если мне нужно редактировать файлы плагина (я использую vim-plug), как мне сделать это аккуратно (чтобы не сломалось при обновлении)?
Спасибо. Если необходимо, могу предоставить полную init.vim
или полную конфигурацию neovim на github.
решение1
Сопоставление клавиш Tab в Vimwiki также конфликтует с моим автозаполнением coc.nvim, добавьте это в свой init.vim
au filetype vimwiki silent! iunmap <buffer> <Tab>
решение2
i Изменено сопоставление для настройки COC
inoremap <silent> <expr> <C-End> pumvisible() ? coc#_select_confirm() : "<Cg>u<CR><cr>=coc#on_enter()<CR>"
теперь я выбираю, нажав ctrl + end