LoginSignup
54
61

More than 5 years have passed since last update.

【vimめも】 10. マッピング

Last updated at Posted at 2018-03-25

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]

前回:【vimめも】 9. 設定(set)系
次回:【vimめも】 11. バッファとウィンドウ

54
61
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
54
61