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


11

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

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

回答:


14

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

:help ins-completion-menu

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

:help popupmenu-keys

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

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

こちらもご覧ください

:help complete_CTRL-Y

挿入モード補完の場合の説明全体については、

:help ins-completion

4

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

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

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


1
このコードが何をするか、それがOPによって与えられる問題にどのように対処するかを説明できますか?説明されていないコードは、信頼されておらず、ユーザーにとって危険であるように見えます。
bwDraco 2015

0

これを.vimrcに追加しましたが、今は思い通りに動作します。

noremap pumvisible()?「\」:「」

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.