如何解決 vim 與 coc 的鍵綁定衝突?

如何解決 vim 與 coc 的鍵綁定衝突?

正如前言,我不是程式設計師,但我編寫了一些 shell 來實現自動化。

這是在 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>and <Space><Right>但這產生了多米諾骨牌效應,使我的箭頭鍵在所有情況下都像 Enter 一樣。

我該如何修正這個衝突?如果我必須編輯插件檔案(我正在使用 vim-plug),那麼我怎麼能乾淨地完成它(這樣它就不會在更新時中斷)?

謝謝。如果有必要,我可以init.vim在 github 上提供完整的或我的整個 neovim 配置。

答案1

vimwiki 中的 Tab 鍵映射也與我的 coc.nvim 自動完成衝突,請將其新增至您的 init.vim 中

au filetype vimwiki silent! iunmap <buffer> <Tab>

答案2

我更改了 COC 設定的映射

inoremap <silent> <expr> <C-End> pumvisible() ? coc#_select_confirm() : "<Cg>u<CR><cr>=coc#on_enter()<CR>"

現在我透過按 ctrl + end 來選擇

相關內容