正如前言,我不是程式設計師,但我編寫了一些 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 來選擇