web-dev-qa-db-ja.com

<C-PageX>から:bYへのマッピングがgvimで機能しないのはなぜですか?

私の.vimrcファイル、次の2行があります。

noremap! <C-PageDown> :bnext <CR>
noremap! <C-PageUp>   :bprev <CR>

しかし、それらは機能しません!挿入モードでは、次のように入力します

<C-v><C-PageDown>

戻り値

<C-PageDown>

(文字通り)そして同様に<C-PageUp>そして、コマンドを実行しようとすると、

:bnext

(プラス改行)。通常モードでは効果はありません。したがって、キーマップがXまたは私のシェルによって飲み込まれていないことはわかっていますが、他に何が問題になる可能性がありますか?他のキーマップは正常に機能します。

1
gvkv

解決しました!

noremap  <C-PageDown>           :bnext <CR>
noremap  <C-PageUp>             :bprev <CR>
inoremap <C_PageDown> <C-\><C-O>:bnext <CR>
inoremap <C_PageUp>   <C-\><C-O>:bprev <CR>

挿入モードでは、キーマッピングのRHS上のすべてのものが文字通り挿入されるため、単一のコマンドに対して通常モードに入る<C-O>を使用する必要があります。 <C-\>は、行末で<C-O>を呼び出すときに発生するカーソルが左に移動するのを防ぎます。

また、<C-O>:bnextの間にスペースを入れることはできません。そうしないと、<C-O>によって食べられてしまいます。

2
gvkv

このキーはすでにvimがタブページを切り替えるために使用しているためでしょうか? vimsドキュメントの説明を参照

0
fschmitt

:noremapのnは通常モード用であるため、挿入モードでは機能しません。挿入モードで動作させたい場合は、:imapを使用してください。 <C-V>を使用して挿入モードで動作させようとしている場合は、<C-O>を探していたと思います。

0
diediedie