只是作为前言,我不是一名程序员,但是我编写了一些 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>
为<Space>
和 ,<Right>
但这产生了多米诺骨牌效应,使我的箭头键在任何情况下都像回车键一样。
我该如何解决此冲突?如果我必须编辑插件文件(我正在使用 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 进行选择