vim の coc とのキーバインド競合を解決するにはどうすればよいですか?

vim の coc とのキーバインド競合を解決するにはどうすればよいですか?

前置きとして、私はプログラマーではありませんが、自動化のためにシェルを少し書きました。

これは 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>その結果、矢印キーがあらゆる状況で Enter キーのように動作するというドミノ効果が発生しました。

この競合を修正するにはどうすればよいでしょうか? プラグイン ファイルを編集する必要がある場合 (vim-plug を使用しています)、(更新時に壊れないように) きれいに編集するにはどうすればよいでしょうか?

init.vimありがとうございます。必要であれば、完全な Neovim 設定全体を github で提供できます。

答え1

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を押して選択します

関連情報