回答:
現在のポップアップメニューの状態によって異なります(を参照:help popupmenu-completion
)。あなたの質問から、あなたは状態2にいることを理解しています(完了を見つけるために矢印キーを押したため)。ただし、Enter状態2のデフォルトの動作は、改行なしで補完を挿入することです。説明するのは通常、状態1の動作です(Ctrl+ N/ Ctrl+ を使用する場合P)。
すべての状態で一貫して機能する方法は、Ctrl+ を使用することYです。「はい、その言葉を受け入れてください」の略としてYを覚えているのが好きです。また、geedoubleyaの答えのように再マップしない限り、完成した単語の後に来るはずのテキストの入力を開始することもできます。
同じコンテキストで、Ctrl+ Eを押してメニューをキャンセルし、呼び出し前のテキストのままにすることができます。他のコンテキストでCtrl+ EとCtrl+の組み合わせに慣れている場合Y(たとえば、通常モードで上下にスクロールしたり、挿入モードでカーソルの下または上に文字を挿入したりする場合)、ここでそれを覚える方法の1つです。メニューの「終了」などと考えることもできると思います。
詳細:help popupmenu-keys
をご覧ください。
個人的に私はこれを使用します:
inoremap <expr> <TAB> pumvisible() ? "\<C-y>" : "\<CR>"
inoremap <expr> <Esc> pumvisible() ? "\<C-e>" : "\<Esc>"
inoremap <expr> <C-j> pumvisible() ? "\<C-n>" : "\<Down>"
inoremap <expr> <C-k> pumvisible() ? "\<C-p>" : "\<Up>"
CtrlPプラグインを使用する人は誰でもこのマッピングが便利だと思うかもしれません。
矢印キーを使用する代わりに、j
&k
キーを有効にしてオートコンプリートリストをスクロールします。
これを行うと、スクロール中に選択した単語に一致するように現在の行が変更されます。
そのため、カーソルは置換された単語の最後で挿入モードのままなので、Enterキーを押す必要はありません。
これを有効にするには、これを.vimrcに追加します(stackoverflowの他の人に感謝):
inoremap <expr> j ((pumvisible())?("\<C-n>"):("j"))
inoremap <expr> k ((pumvisible())?("\<C-p>"):("k"))
これとは別に、矢印キーを使用する代わりにCtrl-n
、オプションを呪い(Ctrl-p
逆方向に移動)を繰り返し、現在の行が移動するときにEnter
キーマッピングを必要とせずに置き換えることができます。