前置きとして、私はプログラマーではありませんが、自動化のためにシェルを少し書きました。
これは 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を押して選択します