マッピングモードまとめ

vimのショートカットといえばmap、
でもmapは7つもモードがあるのでわかりずらい。
というわけでまとめてみました。

コマンド ノーマル ビジュアル オペレータ保留 挿入モード コマンド行
:map
:nmap
:vmap
:omap
:map!
:imap
:cmap
ノーマル
通常のモード
ビジュアル
vでヴィジュアルモードに入っている場合
オペレータ保留
オペレータ保留モードは続けて入力があるような場合の時、例えばcwのwがそれに当たる。
挿入モード
iで文字挿入モードに入っている場合
コマンド行
:でvimコマンドモードに入っている場合

マップ方法

この表に従うと、ノーマルと挿入時にマップしたい場合には

:nmap yp  yyp
:imap yp  yp

とすればよい。

マップ解除

また、:unmapを使うとマップを解除できる。
ノーマルとビジュアルのみにしたい場合には:nmap :vmapと2つマップすればよいが

:map yp yyp
:ounmap yp

とすると、mapからomapだけmap解除してくれる。

マップの一覧

mapされてる一覧をみるには

:map

とだけやれば一覧が表示される。

一時解除

余談だけど:noremapってのがある。これはすでにマップされているのを(一時的に)無効にする時に使う。

:map ^A yy   #^AはCtrl-V Ctrol-Aを入力
:map <Ctrl-B> ^A^]

と指定すると、は前述のmapでyyにマップされているので、
yy^]と入力したことになる。
これだと、本当にが入力したいときに打てないため、これを回避するために

:map ^A yy   #^AはCtrl-V Ctrol-Aを入力
:noremap ^B ^A^]

とやると^Bはを入力したようにマップできる。