Vimのステータスラインをより有効に活用する設定法
本稿は最近出版された『Hacking Vim』からの抜粋である。
デフォルトのステータスラインに示されるのは、右側に現在のカーソル位置(行番号と列番号)、左側に編集中のファイル名(開いている場合)という情報だけであり、Vimコマンドを実行する場合は、このステータスラインの代わりにコマンドバッファが表示される。また何らかのメッセージを表示させるタイプのコマンドを実行すると、その結果はステータスラインの右側に出力されるようになっている。
ごく簡単なファイル編集を手早く済ませるだけという用途であれば、このデフォルトのステータスラインのままでも特に不自由はしないはずだ。そうではなく、Vimを常用して様々なファイルフォーマットを扱うというユーザであれば、ステータスラインにはもう少し有用な情報を表示してもらいたいところであろう。
ステータスラインの表示フォーマットは、下記のコマンドで指定できる。
:set statusline format
このformatには、ステータスラインの表示フォーマットをprintfの引数と同様の文字列で指定すればいい。
これは「:help 'statusline'
」と入力してVimのヘルプシステムを呼び出すと分かることだが、実のところステータスラインには様々な情報を表示できるのである。そのうち、自分が行う作業にとって有用だと思うものを選べばいい。
私の場合、ステータスラインには次の情報を表示させるようにしている。
- 編集中のファイル名
- 編集中のファイルフォーマット(DOS、Unix)
- Vimが認識している現在のファイルタイプ
- カーソル位置にあるキャラクタのASCIIおよび16進値
- ドキュメント中の位置を示す行および列番号
- ファイルの長さ(行数)
上記の情報をすべて一覧させるコマンドは次のような指定となるが、これによりステータスラインは真に役立つインフォメーションバーに変化してくれる。
:set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ [POS=%04l,%04v][%p%%]\ [LEN=%L]
なおこの設定では、個々の情報を区別しやすくするため各項目を“[ ]”で囲むようにしているが、これは視認性を上げるためだけのものなので不要だと思う場合は省略してもいい。
ところが上記のコマンドを実行しただけでは、ステータスラインはデフォルト設定のまま何も変化してくれない。この原因は、そもそもデフォルトのVimでは本当のステータスラインは表示されないようになっているためで、通常ステータスラインだと思われているものの正体は、コマンドバッファに若干の付帯情報が表示されているだけなのである。本物のステータスラインをVimに表示させるには、下記の設定を自分の.vimrcファイルに追加しなければならない。このコマンドは、エディタウィンドウの末尾から2行目にステータスラインを常時表示させるための指定である。
:set laststatus=2
この設定変更に伴いエディタウィンドウの最終行には、コマンドバッファ専用の表示領域が追加されるはずである。これは同時にステータスライン専用の表示行を設けることにもなるが、そこを見ることで編集中のファイルに関する有用な各種の情報が随時確認できるようになる。ただしこうしたステータスライン専用行の追加は、その分だけ画面上の編集領域を減らすことにもなってしまう。この表示を現在の編集セッションにおいてのみ削除したければ、下記のコマンドをVim上で直接実行すればいい。
:set laststatus=0
メニューおよびツールバーの非表示化
Vimをコンソールモードで扱うことに慣れたユーザであれば、ウィンドウ上にメニューやツールバーを表示させない状態の方がしっくりくるかもしれない。ところがGvimでは、メニューおよびツールバーを表示するのがデフォルトのGUI設定となっている。
メニューやツールバーを消してでも可能な限り編集領域を増やしたいと感じているユーザは、かなりの数に上ることだろう。とは言うものの、有用な機能をメニューの形態で追加するスクリプトも各種存在しているので、そう簡単にメニューを手放すこともできない。こうしたジレンマを解消してくれるソリューションの1つは、メニューおよびツールバーの表示/非表示をその場で切り替えられるようにしておくことである。
下記のコードはGvimのキーマップを変更して、メニューとツールバーの切り替え機能をCtrl-F2に割り当てるという設定である。実際にそうした機能を使用するには、この設定コードを各自の.vimrcファイルに追加しておけばいい。
map <silent> <C-F2> :if &guioptions =~# 'T' <Bar> \set guioptions-=T <Bar> \set guioptions-=m <bar> \else <Bar> \set guioptions+=T <Bar> \set guioptions+=m <Bar> \endif<CR>
この設定が有効化されると、不要時にはCtrl-F2を押すだけでメニューとツールバーを非表示化して、その削減分をテキスト編集領域に割り当てることができる。
あるいは恒久的にメニューやツールバーを消しておくという設定も、vimrcファイルに次の設定行を追加することで実現できる。まずメニュー表示を削除したい場合は、次の行を追加する。
:set guioptions-=m
同じくツールバー表示を削除するには次の行を追加する。
:set guioptions-=T
その他のGUI項目についても、setguioptions
コマンドにより変更ができるものが存在している。具体的に何を変更できるかは「:help 'guioptions'
」で確認して頂きたい。