web-dev-qa-db-ja.com

Vimの完了-Enterキーで提案を選択した後は、常に改行を抑制します

Enterキーを使用して(Ctrl-Nを押したときに表示される完了ポップアップから)提案を選択した後、Vimが改行を挿入し、カーソルが次の行に移動することがあります。これは常に起こるわけではありません-Vimはそれについて賢くしようとしているようで、これが私が望むものであると考えた場合にのみ次の行に移動します。

ただし、この動作を無効にしたいので(常にスマートであるとは限らないため)、Enterキーを手動で押して、常に自分で次の行に移動する必要があります。これは可能ですか?

11
user67834

挿入完了の使用中に<Enter>キーを入力したときにVimが何をするかは、完了メニューの状態によって異なります。メニューの動作は次のとおりです。

:help ins-completion-menu

挿入完了を使用するときのさまざまなキーの動作については、次のセクションで説明します。

:help popupmenu-keys

ここで、<Enter>キーの動作はメニューの状態に依存することを説明しています。私が理解しているように、<Enter>と入力すると、カーソルキーを使用してメニューから一致するものを選択した場合を除いて、改行が挿入されます。

改行を不要なときに挿入しないようにする最善の方法は、Ctrl-YやCtrl-Eなどの他のキーを使用して改行を終了または選択することです。

も参照してください

:help complete_CTRL-Y

挿入モードが完了した場合の説明全体については、

:help ins-completion
14
garyjohn

このマッピングを.vimrcファイルに追加できます。

inoremap <expr> <CR> pumvisible() ? "\<C-Y>" : "\<CR>"

ポップアップメニューが表示されている場合は、挿入モードのリターンキーを入力CTRL-Yにマップします。 CTRL-Yは、新しい行を入力せずに、メニューで現在選択されている項目を選択します。それ以外の場合は、リターンキーが通常のように動作します。

4
Jake

これを.vimrcに追加すると、希望どおりに動作するようになりました。

noremap pumvisible()? "\": ""

0
martins