osgsm.io
HomeNotesVim でキーリマップする

Vim でキーリマップする

Published Feb 3, 2025
Updated Feb 16, 2025

VIm のキーリマップコマンドには大別して再マップ可のものとそうでないものがある。 :map:no[remap] コマンドというものがあり、前者は再マップされ、後者は再マップされない。

書き方は次の通り。

:map {lhs} {rhs}

{lhs}{rhs} に割り当てる。ちなみに lhs とは left-hand-side (左辺値)のこと。 rhs は右辺値。

また、マップには7つのモードがある。

  • ノーマル
  • ビジュアル
  • 選択
  • オペレータ待機: d, y, c などを押したあとなど
  • 挿入
  • コマンドライン
  • ターミナル: :terminal バッファでの入力時

マップコマンドとモードの対応は次のようになっている。

:help map.txt
							map-table
         Mode  | Norm | Ins | Cmd | Vis | Sel | Opr | Term | Lang | 
Command        +------+-----+-----+-----+-----+-----+------+------+ 
[nore]map      | yes  |  -  |  -  | yes | yes | yes |  -   |  -   |
n[nore]map     | yes  |  -  |  -  |  -  |  -  |  -  |  -   |  -   |
[nore]map!     |  -   | yes | yes |  -  |  -  |  -  |  -   |  -   |
i[nore]map     |  -   | yes |  -  |  -  |  -  |  -  |  -   |  -   |
c[nore]map     |  -   |  -  | yes |  -  |  -  |  -  |  -   |  -   |
v[nore]map     |  -   |  -  |  -  | yes | yes |  -  |  -   |  -   |
x[nore]map     |  -   |  -  |  -  | yes |  -  |  -  |  -   |  -   |
s[nore]map     |  -   |  -  |  -  |  -  | yes |  -  |  -   |  -   |
o[nore]map     |  -   |  -  |  -  |  -  |  -  | yes |  -   |  -   |
t[nore]map     |  -   |  -  |  -  |  -  |  -  |  -  | yes  |  -   |
l[nore]map     |  -   | yes | yes |  -  |  -  |  -  |  -   | yes  |

例えば、挿入時とコマンドラインで C-d<Del> にリマップしたい場合は次のようになる。

:noremap! <C-d> <Del>

参考