mapとは
自分で好きなキーに対して、
特定のキーやキーの組み合わせ、関数などを割り当てたりすることが出来る機能です
基本的な説明
マッピングを設定
基本は、map
+ 割り当てたいキー + 割り当てたい内容
で行います
マッピングを解除
mappingをやっぱり取り消したい場合はunmap
+ 割り当ててるキー
マッピングを確認
map
+ 確認したいキー
で行います。
再帰マップと非再帰マップ
map j gj
こうしたときに
jがgjになるけど、gjのjの部分がgjにならない・・・??
と無限ループになってしまいます
再帰的にマッピングされないようにするためには
mapではなくnoremapを使います
map
: 再帰的マップnoremap
: 非再帰的マップ
モード別の設定
vimではモードにより、同じキーでも様々な動作になるため
モード別にマッピングを行うことができます
確認や解除なども同じで要領です
:map :noremap :unmap ノーマル、ビジュアル、選択、オペレータ待機
:nmap :nnoremap :nunmap ノーマル
:vmap :vnoremap :vunmap ビジュアル、選択
:smap :snoremap :sunmap 選択
:xmap :xnoremap :xunmap ビジュアル
:omap :onoremap :ounmap オペレータ待機
:map! :noremap! :unmap! 挿入、コマンドライン
:imap :inoremap :iunmap 挿入
:lmap :lnoremap :lunmap 挿入、コマンドライン、Lang-Arg
:cmap :cnoremap :cunmap コマンドライン
キーの説明
マッピング時の特殊なキーの表記です
キー | 意味 |
---|---|
<BS> | バックスペース |
<Tab> | タブ |
<Enter> | エンター |
<CR> | キャリッジリターン。エンター押下時の改行と同じ |
<Esc> | エスケープ |
<Space> | スペース |
<Bar> | 垂直バー(パイプ) |
<Up> | 上カーソル |
<Down> | 下カーソル |
<Left> | 左カーソル |
<Right> | 右カーソル |
<S-何か> | Shift押しながら |
<C-何か> | Ctrl押しながら |
<S-C-何か> | ShiftとCtrl押しながら |
<F1> - <F12> | F1〜F12 |
AltキーやMacのCommandなどにもマッピングはできますが、少しややこしい?ので割愛
詳細を知りたい人はhelp :map-alt-keys
を確認ください
また、動作をさせない用途で
空のマップを作るには 割当キーに "" を指定する方法があります。
例)F8を何も動作させないようにするmap <F8> <Nop>
空いたキーの確認
helpを引くと下記の記載があります
ぜひお試しを
標準のキー操作を損なうことなくマップできるキーや、使われていないキーを探すには
|index.txt| を参照してください。":help {key}^D" を使用してそのキーが使われてい
るかどうかを調べることもできます ({key}は調べたいキー、^DはCTRL-Dの入力)。
Leader機能
Leaderとは・・・(helpを引用すると下記)
マップコマンドで特別な文字列 "<Leader>" を使用すると、その部分が変数
"mapleader" に設定された文字列で置き換わります。"mapleader" が空文字列のときや
設定されていない場合にはバックスラッシュが使用されます。例: >
mapは1つのキーに対して割り当てないといけないわけではなく、
キーの組み合わせで動作をそれぞれ設定できます
説明に書いてある通り、mapleaderに設定してあるものが<Leader>
に置き換わるためlet mapleader = "\<Space>"
このような形で設定しておくと<Space>
+ なにかのキー の形で1つのキーからの組み合わせでさまざまな機能をマッピングさせることができます。
そして、これはShougoさんの設定を参考にさせていただき知った方法なのですが
ブラケットにて囲ったものを名前?付けとしておくことができます
nmap <Leader>w[window]
nnoremap [window]h<C-w>h
nnoremap [window]j<C-w>j
nnoremap [window]k<C-w>k
nnoremap [window]l<C-w>l
この場合<Space>wh
とすればウィンドウを左に移動<Space>wj
とすればウィンドウを下に移動 等となります
これをリーダーから操作の種類ごとに分類分けを行うことができます
nmap <Leader>t[tab]
nmap <Leader>w[window]
nmap <Leader>f[filer]
nmap <Leader>r[rails]