読者です 読者をやめる 読者になる 読者になる

mfks17's blog

趣味や思った事を書いていくと思います

vimのキーマッピングを学ぶ

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と使います。(一度しか展開されないやつですね。)
それぞれの括弧を入力したら、遂になる括弧の閉じる方を自動的に挿入して、で←を押して括弧のなかに移動しています。
長々と書いて来ましたが、今回はこのへんで失礼します。

最後までお読み頂きありがとうございました。