Vim の map、noremap 系コマンドで使用できる特殊キーの一覧 (key-notation, key-codes)

キーマップに使えるキー名の一覧

Vim の map 系コマンド(nmapimap)で、F1 キーや BackSpace キーなどの特殊キーを使用したマッピングを行う場合は、下記のヘルプページで表示されるキー表記を使用します。

キー表記のヘルプ
:help key-notation

例えば、特殊キーを表すために次のような表記が使えることがわかります。

  • <BS> … Back Space キー
  • <Bslash> … Back Slash キー (\)
  • <CR> or <Enter> … Enter キー(<CR> がよく使われている)
  • <Esc> … Esc キー
  • <Space> … スペースキー
  • <Tab> … Tab キー
  • <Del> … Delete キー
  • <Up>/<Down>/<Left>/<Right> … 上下左右カーソルキー
  • <F1><F12> … ファンクションキー
  • <Help> … Help キー
  • <Insert> … Insert キー
  • <Home> … Home キー
  • <End> … End キー
  • <PageUp> … Page Up キー
  • <PageDown> … Page Down キー

Shift キー、Control キー、Alt (Meta) キー、Command キー(macOS のみ)といったキーとの同時押しを表現するには、次のように記述します。

  • <S-Up> … Shift + カーソルキー上
  • <C-F10> … Control + F10
  • <M-Space> … Alt (Meta) + Space
  • <D-Right> … Command (macOS) + カーソルキー右
  • <C-S-F1> … Control + Shift + F1

キーマッピングの設定例

例: インサートモードで Control + Shift + F1 キーを押したときに Hello を挿入
:inoremap <C-S-F1> Hello
例: ノーマルモードでスペースキーを押したときに画面スクロール
:nnoremap <Space> <PageDown>

ここで、nmap の代わりに nnoremap を使用しているのは、PageDown キーのデフォルトの振る舞いを割り当てるためです。 nmap を使用すると、PageDown キーにすでに別の機能が割り当てられている場合に、Space キーの機能としてその機能が割り当てられてしまいます。

例: インサートモードで Ctrl-D を 2 回押したときに <Hello> を挿入する
:inoremap <C-D><C-D> <lt>Hello>

ここまでの設定例を見ると分かるように、<> は特殊キーの名前を囲むために使用されます。 < という文字そのものを表したいときは、<lt> のように特殊な書き方をしなければいけません。

特殊キー名を素早く入力する方法

インサートモードやコマンドラインモードで、Ctrl-K(あるいは Ctrl-Q)に続けて特殊キーを入力すると、カーソル位置にそのキー名を挿入することができます。 例えば、Ctrl-KCtrl-Shift-BackSpace と入力すると、下記のような文字列が挿入されます。

<C-S-BS>

この表記が、nmapnnoremap コマンドで使用できるキー名となります。 この機能を使えばキー名を覚える必要がないように思えますが、Esc キーなどはうまく表示できかったりする(ノーマルモードに戻ってしまう)ので、やはり基本は :help key-notation の一覧表で確認するのがよいでしょう。