vimのキーマッピングを学ぶ
ここまでの.vimrcはただ先人たちのモノをコピペする簡単なお仕事だったので、とりあえず少しづつ学習していこうと思います。
キーマッピング
コマンド | ノーマルモード | 挿入モード | コマンドラインモード | ビジュアルモード |
---|---|---|---|---|
map/noremap | ◯ | ー | ー | ◯ |
nmap/nnoremap | ◯ | ー | ー | ー |
imap/inoremap | ー | ◯ | ー | ー |
cmap/cnoremap | ー | ー | ◯ | ー |
vmap/vnoremap | ー | ー | ー | ◯ |
map!/noremap! | ー | ◯ | ◯ | ー |
mapとnoremap
- map系
キーシーケンスを展開したあと、さらに別のマップを適応しようとする
- noremap系
一度だけ展開する
Vimのキーマッピング
キーマッピングの設定は各モードごとに独立しています。
上記の様にモードごとに設定します。 例)ノーマルモードで設定したものは、コマンドモードでは適応されないとか。
特殊なキーの指定
方向キーや修飾キー付きのキーなど、特殊なキーをキーマッピングで指定したい場合は、<>記法を使うそうです。
mapのオプション
オプション | 説明 |
---|---|
<silent> | コマンドラインへの表示を抑制。キーマッピングからコマンドを実行する場合に指定 |
<unique> | すでにキーマッピングが存在する場合、エラーにします。通常は上書きされる |
<buffer> | バッファローカルなキーマッピングを定義 |
<expr> | マップ先の文字列をVim式とみなして、評価した結果を文字列のマップ先とする |
ここで、IDEの機能でよくある括弧の自動挿入の機能を実現してみます。
したのようにしてみました。
inoremap { {}<LEFT> inoremap [ []<LEFT> inoremap ( ()<LEFT> inoremap " ""<LEFT> inoremap ' ''<LEFT> inoremap < <><LEFT>
今回は、挿入モードの時の設定なので、inoremapと使います。(一度しか展開されないやつですね。)
それぞれの括弧を入力したら、遂になる括弧の閉じる方を自動的に挿入して、で←を押して括弧のなかに移動しています。
長々と書いて来ましたが、今回はこのへんで失礼します。
最後までお読み頂きありがとうございました。