map.txt For Vim バージョン 8.2. Last change: 2021 May 16
VIMリファレンスマニュアル by Bram Moolenaar
キーマップ、短縮入力、ユーザー定義コマンドについて。
ユーザーマニュアルの05.3、24.7、40.1でこの機能について紹介しています。
1. マップ key-mapping
1.1 マップコマンド :map-commands
1.2 特別な引数 :map-arguments
1.3 マップとモード :map-modes
1.4 マップの一覧表示 map-listing
1.5 特殊キーのマップ :map-special-keys
1.6 特殊文字 :map-special-chars
1.7 マップに使うキー map-which-keys
1.8 例 map-examples
1.9 マップを使う map-typing
1.10 Altキーを使ったマップ :map-alt-keys
1.11 modifyOtherKeys モードのマップ modifyOtherKeys
1.12 オペレータの作成 :map-operator
2. 短縮入力 abbreviations
3. ローカルマップとローカル関数 script-local
4. ユーザー定義コマンド user-commands
==============================================================================
1. マップ (Key mapping) key-mapping mapping macro
マップは入力キーの動作を変更するために使われます。一般的にはファンクションキー
にコマンドを割り当てるのに使われます。例:
このマップはカーソルの位置に現在の日時を挿入します。(<F2>などは<>表記法を参照)
1.1 マップコマンド :map-commands
マップを新しく作成、削除、一覧表示するコマンドがあります。マップコマンドの種類
とモードの関係については map-overviewを参照してください。
{lhs} left-hand-side (左辺値) の略 {lhs}
{rhs} right-hand-side (右辺値) の略 {rhs}
:map {lhs} {rhs} mapmode-nvo :map
:nm[ap] {lhs} {rhs} mapmode-n :nm :nmap
:vm[ap] {lhs} {rhs} mapmode-v :vm :vmap
:xm[ap] {lhs} {rhs} mapmode-x :xm :xmap
:smap {lhs} {rhs} mapmode-s :smap
:om[ap] {lhs} {rhs} mapmode-o :om :omap
:map! {lhs} {rhs} mapmode-ic :map!
:im[ap] {lhs} {rhs} mapmode-i :im :imap
:lm[ap] {lhs} {rhs} mapmode-l :lm :lma :lmap
:cm[ap] {lhs} {rhs} mapmode-c :cm :cmap
:tma[p] {lhs} {rhs} mapmode-t :tma :tmap
キー入力 {lhs} を {rhs} に割り当てます。作成したマップ
は、マップコマンドに対応したモードで使用できます。マッ
プが使用されたときに {rhs} が調べられ、再マップされま
す。マップを入れ子にしたり再帰的にすることができます。
:nore :norem
:no[remap] {lhs} {rhs} mapmode-nvo :no :noremap :nor
:nn[oremap] {lhs} {rhs} mapmode-n :nn :nnoremap
:vn[oremap] {lhs} {rhs} mapmode-v :vn :vnoremap
:xn[oremap] {lhs} {rhs} mapmode-x :xn :xnoremap
:snor[emap] {lhs} {rhs} mapmode-s :snor :snore :snoremap
:ono[remap] {lhs} {rhs} mapmode-o :ono :onoremap
:no[remap]! {lhs} {rhs} mapmode-ic :no! :noremap!
:ino[remap] {lhs} {rhs} mapmode-i :ino :inor :inoremap
:ln[oremap] {lhs} {rhs} mapmode-l :ln :lnoremap
:cno[remap] {lhs} {rhs} mapmode-c :cno :cnor :cnoremap
:tno[remap] {lhs} {rhs} mapmode-t :tno :tnoremap
キー入力 {lhs} を {rhs} に割り当てます。作成したマッ
プ、はマップコマンドに対応したモードで使用できます。
{rhs} は再マップされないので、マップが入れ子になったり
再帰的になることはありません。コマンドを再定義するとき
によく使われます。
:unm[ap] {lhs} mapmode-nvo :unm :unmap
:nun[map] {lhs} mapmode-n :nun :nunmap
:vu[nmap] {lhs} mapmode-v :vu :vunmap
:xu[nmap] {lhs} mapmode-x :xu :xunmap
:sunm[ap] {lhs} mapmode-s :sunm :sunmap
:ou[nmap] {lhs} mapmode-o :ou :ounmap
:unm[ap]! {lhs} mapmode-ic :unm! :unmap!
:iu[nmap] {lhs} mapmode-i :iu :iunmap
:lu[nmap] {lhs} mapmode-l :lu :lunmap
:cu[nmap] {lhs} mapmode-c :cu :cun :cunmap
:tunma[p] {lhs} mapmode-t :tunma :tunmap
マップコマンドに対応したモードの {lhs} というマップを
削除します。他のモードのマップは残ります。
Note: 末尾の空白は {lhs} に含まれます。次の unmap コマ
ンドは機能しません:
:mapc[lear] mapmode-nvo :mapc :mapclear
:nmapc[lear] mapmode-n :nmapc :nmapclear
:vmapc[lear] mapmode-v :vmapc :vmapclear
:xmapc[lear] mapmode-x :xmapc :xmapclear
:smapc[lear] mapmode-s :smapc :smapclear
:omapc[lear] mapmode-o :omapc :omapclear
:mapc[lear]! mapmode-ic :mapc! :mapclear!
:imapc[lear] mapmode-i :imapc :imapclear
:lmapc[lear] mapmode-l :lmapc :lmapclear
:cmapc[lear] mapmode-c :cmapc :cmapclear
:tmapc[lear] mapmode-t :tmapc :tmapclear
マップコマンドに対応したモードのすべてのマップを削除し
ます。
バッファローカルなマップを削除するには <buffer> 引数を
付けてください :map-<buffer>。
警告: 標準設定のマップも削除されます。
:map mapmode-nvo
:nm[ap] mapmode-n
:vm[ap] mapmode-v
:xm[ap] mapmode-x
:sm[ap] mapmode-s
:om[ap] mapmode-o
:map! mapmode-ic
:im[ap] mapmode-i
:lm[ap] mapmode-l
:cm[ap] mapmode-c
:tma[p] mapmode-t
マップコマンドに対応したモードのすべてのマップを一覧表
示します。Note: ":map" と ":map!" は複数のモードを表示
できるのでよく使われます。
:map {lhs} mapmode-nvo :map_l
:nm[ap] {lhs} mapmode-n :nmap_l
:vm[ap] {lhs} mapmode-v :vmap_l
:xm[ap] {lhs} mapmode-x :xmap_l
:sm[ap] {lhs} mapmode-s :smap_l
:om[ap] {lhs} mapmode-o :omap_l
:map! {lhs} mapmode-ic :map_l!
:im[ap] {lhs} mapmode-i :imap_l
:lm[ap] {lhs} mapmode-l :lmap_l
:cm[ap] {lhs} mapmode-c :cmap_l
:tma[p] {lhs} mapmode-t :tmap_l
マップコマンドに対応したモードの {lhs} で始まるマップ
を一覧表示します。
マップコマンドを使うと、単キーまたは複数キーの入力を別の文字列にマップできま
す。ファンクションキーにコマンド列を割り当てたり、あるキーを別のキーに変換した
りできます。マップを保存、復元する方法については :mkexrc を参照してくださ
い。
map-ambiguous
二つのマップがあって、両方とも同じ文字で始まっている場合、どちらを使用するかが
あいまいになってしまいます。例:
の文字が必要になります。そのため、"aa" が入力された時点ではまだマップは適用さ
れず、次の入力まで待機状態になります。例えば空白文字を入力すれば "foo" と空白
文字が挿入されます。"a" を入力すれば "bar" が挿入されます。
1.2 特別な引数 :map-arguments
引数に "<buffer>"、"<nowait>"、"<silent>"、"<special>"、"<script>"、"<expr>"、
"<unique>" を指定できます。マップコマンドの直後 (他の引数の前) に置いてくださ
い。
:map-local :map-<buffer> E224 E225
カレントバッファだけで使用できるマップを作成するには、マップコマンドの引数に
"<buffer>" を指定します。例:
ルなマップが存在する場合に短いローカルなマップが影響を受けないようにするには下
記の <nowait> を参照して下さい。
"<buffer>" はマップを削除するときにも指定できます:
す。アンロード(:bunload)では消去されません。ローカルオプションと同じです。
また、map-precedence を参照して下さい。
:map-<nowait> :map-nowait
"," にバッファローカルなマップを定義する場合に "," から始まるグローバルなマッ
プがあるかもしれません。その場合はVimが "," のマップか、あるいはより長いマップ
を使用するかどうか知るために別の文字を入力する必要があります。これを避けるには
引数に <nowait> を追加します。そしてそのマップは一致する場合に使用され、Vimは
それ以上入力される文字を待ちません。しかし、既に文字が入力されていた場合はそれ
が使われます。
Note: これが動作するのは <nowait> なマッピングが完全にマッチし、なんらかの部分
マッチの前に見付かるときです。これが動作するのは:
- バッファローカルなマッピングで唯一のマッチがあるとき。なぜなら常にグローバル
なマッピングより先に見付かるからです。
- これとは別のバッファローカルなマッピングが部分マッチするが、より早く定義され
ているとき (最後に定義したマッピングが最初に見付かる)。
:map-<silent> :map-silent
実行するコマンドがコマンドラインに表示されないようにするには、マップコマンドの
引数に "<silent>" を指定します。例:
実行されたコマンドが出力するメッセージは表示されてしまいます。それを静かにさせ
るには ":silent" を使います。
:map <silent> ,h :exe ":silent normal /Header\r"<CR>
それでもまだ、例えば inputdialog() のプロンプトなどは表示されます。
"<silent>" は短縮入力にも使えますが、コマンドラインで使うと正しく表示されなく
なります。
:map-<special> :map-special
'cpoptions' に "<" フラグが入っている場合でも、<> 表記を使って特殊キーを記述で
きます。'cpoptions' を設定することで副作用を発生させたくない場合に使ってくださ
い。例:
VIMリファレンスマニュアル by Bram Moolenaar
キーマップ、短縮入力、ユーザー定義コマンドについて。
ユーザーマニュアルの05.3、24.7、40.1でこの機能について紹介しています。
1. マップ key-mapping
1.1 マップコマンド :map-commands
1.2 特別な引数 :map-arguments
1.3 マップとモード :map-modes
1.4 マップの一覧表示 map-listing
1.5 特殊キーのマップ :map-special-keys
1.6 特殊文字 :map-special-chars
1.7 マップに使うキー map-which-keys
1.8 例 map-examples
1.9 マップを使う map-typing
1.10 Altキーを使ったマップ :map-alt-keys
1.11 modifyOtherKeys モードのマップ modifyOtherKeys
1.12 オペレータの作成 :map-operator
2. 短縮入力 abbreviations
3. ローカルマップとローカル関数 script-local
4. ユーザー定義コマンド user-commands
==============================================================================
1. マップ (Key mapping) key-mapping mapping macro
マップは入力キーの動作を変更するために使われます。一般的にはファンクションキー
にコマンドを割り当てるのに使われます。例:
:map <F2> a<C-R>=strftime("%c")<CR><Esc>
このマップはカーソルの位置に現在の日時を挿入します。(<F2>などは<>表記法を参照)
1.1 マップコマンド :map-commands
マップを新しく作成、削除、一覧表示するコマンドがあります。マップコマンドの種類
とモードの関係については map-overviewを参照してください。
{lhs} left-hand-side (左辺値) の略 {lhs}
{rhs} right-hand-side (右辺値) の略 {rhs}
:map {lhs} {rhs} mapmode-nvo :map
:nm[ap] {lhs} {rhs} mapmode-n :nm :nmap
:vm[ap] {lhs} {rhs} mapmode-v :vm :vmap
:xm[ap] {lhs} {rhs} mapmode-x :xm :xmap
:smap {lhs} {rhs} mapmode-s :smap
:om[ap] {lhs} {rhs} mapmode-o :om :omap
:map! {lhs} {rhs} mapmode-ic :map!
:im[ap] {lhs} {rhs} mapmode-i :im :imap
:lm[ap] {lhs} {rhs} mapmode-l :lm :lma :lmap
:cm[ap] {lhs} {rhs} mapmode-c :cm :cmap
:tma[p] {lhs} {rhs} mapmode-t :tma :tmap
キー入力 {lhs} を {rhs} に割り当てます。作成したマップ
は、マップコマンドに対応したモードで使用できます。マッ
プが使用されたときに {rhs} が調べられ、再マップされま
す。マップを入れ子にしたり再帰的にすることができます。
:nore :norem
:no[remap] {lhs} {rhs} mapmode-nvo :no :noremap :nor
:nn[oremap] {lhs} {rhs} mapmode-n :nn :nnoremap
:vn[oremap] {lhs} {rhs} mapmode-v :vn :vnoremap
:xn[oremap] {lhs} {rhs} mapmode-x :xn :xnoremap
:snor[emap] {lhs} {rhs} mapmode-s :snor :snore :snoremap
:ono[remap] {lhs} {rhs} mapmode-o :ono :onoremap
:no[remap]! {lhs} {rhs} mapmode-ic :no! :noremap!
:ino[remap] {lhs} {rhs} mapmode-i :ino :inor :inoremap
:ln[oremap] {lhs} {rhs} mapmode-l :ln :lnoremap
:cno[remap] {lhs} {rhs} mapmode-c :cno :cnor :cnoremap
:tno[remap] {lhs} {rhs} mapmode-t :tno :tnoremap
キー入力 {lhs} を {rhs} に割り当てます。作成したマッ
プ、はマップコマンドに対応したモードで使用できます。
{rhs} は再マップされないので、マップが入れ子になったり
再帰的になることはありません。コマンドを再定義するとき
によく使われます。
:unm[ap] {lhs} mapmode-nvo :unm :unmap
:nun[map] {lhs} mapmode-n :nun :nunmap
:vu[nmap] {lhs} mapmode-v :vu :vunmap
:xu[nmap] {lhs} mapmode-x :xu :xunmap
:sunm[ap] {lhs} mapmode-s :sunm :sunmap
:ou[nmap] {lhs} mapmode-o :ou :ounmap
:unm[ap]! {lhs} mapmode-ic :unm! :unmap!
:iu[nmap] {lhs} mapmode-i :iu :iunmap
:lu[nmap] {lhs} mapmode-l :lu :lunmap
:cu[nmap] {lhs} mapmode-c :cu :cun :cunmap
:tunma[p] {lhs} mapmode-t :tunma :tunmap
マップコマンドに対応したモードの {lhs} というマップを
削除します。他のモードのマップは残ります。
Note: 末尾の空白は {lhs} に含まれます。次の unmap コマ
ンドは機能しません:
:map @@ foo
:unmap @@ | print
:unmap @@ | print
:mapc[lear] mapmode-nvo :mapc :mapclear
:nmapc[lear] mapmode-n :nmapc :nmapclear
:vmapc[lear] mapmode-v :vmapc :vmapclear
:xmapc[lear] mapmode-x :xmapc :xmapclear
:smapc[lear] mapmode-s :smapc :smapclear
:omapc[lear] mapmode-o :omapc :omapclear
:mapc[lear]! mapmode-ic :mapc! :mapclear!
:imapc[lear] mapmode-i :imapc :imapclear
:lmapc[lear] mapmode-l :lmapc :lmapclear
:cmapc[lear] mapmode-c :cmapc :cmapclear
:tmapc[lear] mapmode-t :tmapc :tmapclear
マップコマンドに対応したモードのすべてのマップを削除し
ます。
バッファローカルなマップを削除するには <buffer> 引数を
付けてください :map-<buffer>。
警告: 標準設定のマップも削除されます。
:map mapmode-nvo
:nm[ap] mapmode-n
:vm[ap] mapmode-v
:xm[ap] mapmode-x
:sm[ap] mapmode-s
:om[ap] mapmode-o
:map! mapmode-ic
:im[ap] mapmode-i
:lm[ap] mapmode-l
:cm[ap] mapmode-c
:tma[p] mapmode-t
マップコマンドに対応したモードのすべてのマップを一覧表
示します。Note: ":map" と ":map!" は複数のモードを表示
できるのでよく使われます。
:map {lhs} mapmode-nvo :map_l
:nm[ap] {lhs} mapmode-n :nmap_l
:vm[ap] {lhs} mapmode-v :vmap_l
:xm[ap] {lhs} mapmode-x :xmap_l
:sm[ap] {lhs} mapmode-s :smap_l
:om[ap] {lhs} mapmode-o :omap_l
:map! {lhs} mapmode-ic :map_l!
:im[ap] {lhs} mapmode-i :imap_l
:lm[ap] {lhs} mapmode-l :lmap_l
:cm[ap] {lhs} mapmode-c :cmap_l
:tma[p] {lhs} mapmode-t :tmap_l
マップコマンドに対応したモードの {lhs} で始まるマップ
を一覧表示します。
マップコマンドを使うと、単キーまたは複数キーの入力を別の文字列にマップできま
す。ファンクションキーにコマンド列を割り当てたり、あるキーを別のキーに変換した
りできます。マップを保存、復元する方法については :mkexrc を参照してくださ
い。
map-ambiguous
二つのマップがあって、両方とも同じ文字で始まっている場合、どちらを使用するかが
あいまいになってしまいます。例:
:imap aa foo
:imap aaa bar
"aa" と入力したとき、"aa" と "aaa" のどちらを使用するかを決定するためには、次:imap aaa bar
の文字が必要になります。そのため、"aa" が入力された時点ではまだマップは適用さ
れず、次の入力まで待機状態になります。例えば空白文字を入力すれば "foo" と空白
文字が挿入されます。"a" を入力すれば "bar" が挿入されます。
1.2 特別な引数 :map-arguments
引数に "<buffer>"、"<nowait>"、"<silent>"、"<special>"、"<script>"、"<expr>"、
"<unique>" を指定できます。マップコマンドの直後 (他の引数の前) に置いてくださ
い。
:map-local :map-<buffer> E224 E225
カレントバッファだけで使用できるマップを作成するには、マップコマンドの引数に
"<buffer>" を指定します。例:
:map <buffer> ,w /[.,;]<CR>
この場合、他のバッファで、",w" に対して別の操作を割り当てることができます: :map <buffer> ,w /[#&!]<CR>
バッファローカルなマップは通常のマップよりも優先して使用されます。長いグローバルなマップが存在する場合に短いローカルなマップが影響を受けないようにするには下
記の <nowait> を参照して下さい。
"<buffer>" はマップを削除するときにも指定できます:
:unmap <buffer> ,w
:mapclear <buffer>
バッファローカルなマップはそのバッファが削除されるときにいっしょに消去されま:mapclear <buffer>
す。アンロード(:bunload)では消去されません。ローカルオプションと同じです。
また、map-precedence を参照して下さい。
:map-<nowait> :map-nowait
"," にバッファローカルなマップを定義する場合に "," から始まるグローバルなマッ
プがあるかもしれません。その場合はVimが "," のマップか、あるいはより長いマップ
を使用するかどうか知るために別の文字を入力する必要があります。これを避けるには
引数に <nowait> を追加します。そしてそのマップは一致する場合に使用され、Vimは
それ以上入力される文字を待ちません。しかし、既に文字が入力されていた場合はそれ
が使われます。
Note: これが動作するのは <nowait> なマッピングが完全にマッチし、なんらかの部分
マッチの前に見付かるときです。これが動作するのは:
- バッファローカルなマッピングで唯一のマッチがあるとき。なぜなら常にグローバル
なマッピングより先に見付かるからです。
- これとは別のバッファローカルなマッピングが部分マッチするが、より早く定義され
ているとき (最後に定義したマッピングが最初に見付かる)。
:map-<silent> :map-silent
実行するコマンドがコマンドラインに表示されないようにするには、マップコマンドの
引数に "<silent>" を指定します。例:
:map <silent> ,h /Header<CR>
このマップを使用するとき、検索文字列はコマンドラインに表示されません。しかし、実行されたコマンドが出力するメッセージは表示されてしまいます。それを静かにさせ
るには ":silent" を使います。
:map <silent> ,h :exe ":silent normal /Header\r"<CR>
それでもまだ、例えば inputdialog() のプロンプトなどは表示されます。
"<silent>" は短縮入力にも使えますが、コマンドラインで使うと正しく表示されなく
なります。
:map-<special> :map-special
'cpoptions' に "<" フラグが入っている場合でも、<> 表記を使って特殊キーを記述で
きます。'cpoptions' を設定することで副作用を発生させたくない場合に使ってくださ
い。例:
:map <special> <F12> /Header<CR>