cat ~/.exrc
きっとこんな中身のはずです。
set nomesg set report=2 set showmode
ここでは、標準の設定を多少変更するため、3つのset命令を登録しておきました。
nomesg (talkなどのメッセージによる割り込みを受け付けない) report=2 (2行以上の変更があった時に、その事実を表示、標準は5行以上) showmode (挿入モードに入るとそのことを表示)
viのカスタマイズに欠かせないのが、キーの割り付けを行うmap命令です。 コマンドモードで使われていないキーに、自分で新しい命令を割り当てることもできます。
:map 文字 命令
map命令は、vi起動後いつでも実行できますが、 .exrc の中に登録しておく方が便利です。よく使う一連の作業を、登録することを考えてみましょう。
map # a#include<
としておけば、#を押すだけで、挿入モードに移って、#include< が入力されます。(最初のaは挿入モードに入ることを意味します。) 未使用のキーは、余り多くありません。特に使いやすい場所にあり敢えて(?)未定義のまま残されているのが、vとgです。 mapしておく内容は、全く新しい機能と限る必要もありません。行の終わりを表す$マークは、しばしば使用しますが、打ち込むのがめんどうな位置にあります。
map z $
これなら、すぐ押せるし、しかも「最後だからz」という意味で覚えるのも楽です。
空いたキーだけではなく、既に使われているキーの機能を変更することもできます。たとえば、0は行の先頭に移動する命令ですが、行の先頭が空白かどうかはチェックしません。しかし、C言語のプログラムのようにインデントが多用されているファイルを編集する場合は、行の先頭よりも、行の最初の空白でない文字に移動する方が便利です。(本来は _ がそのコマンド)
map 0 _
これで0を「プログラム入力用の0」に変更することができます。
map命令はコマンドモードのキー設定ですが、これに対して挿入モードの中で略記を登録する機能がab命令です。abもいつでもexモードの中で定義できますが、.exrcに登録しておくのが便利です。
ab pri printf(”
上のような登録が行われていると、挿入モードの中で pri と打ち込み、それに続いてスペースを押せば、登録された printf(” が登場します。