Vim生活を快適にする5つのスクリプト

 Vimエディタはスクリプト経由で動作を変更することができる。そのため、生産性を上げることができるスクリプトや、ずっと欲しかった機能をVimに追加することができるスクリプトなど、何百というスクリプトがVimコミュニティによって作成されている。この記事では、中でも特に便利だと思われるものを5つ紹介する。

 スクリプトをインストールするには、大抵の場合、スクリプトを ~/.vim/pluginsディレクトリにコピーしてVimを再起動すればよい。スクリプトにはインストール方法についての説明が添えられることになっていて、実際ほとんどのスクリプトに添えられているので、さらに詳しいインストール方法については各スクリプトのページを確認してほしい。

writebackup:単純なリビジョン管理

 Vimは自動的に編集中の内容を保存するため、ファイルの編集中にファイルの保存のことについてそれほど神経質になる必要はない。Vimがたとえクラッシュしたとしても、ファイルの内容はスワップファイルを使って回復させることができる。とは言え、特に設定ファイルを編集するときなど、以前の版のファイルに戻る必要が生じることもある場合のためには、リビジョンを保存しておくことができると便利だ。

 writebackupスクリプトを利用すれば、Vimの中でほとんど手間をかけずにバックアップ用のファイルを作成することができる。writebackupスクリプトをインストールするには、~/.vim/pluginsにスクリプトをコピーして、Vimで:WriteBackupを実行するだけでよい。こうすることでファイルのリビジョンが保存され、後々、以前の版に戻す必要が生じたときに利用することができるようになる。

 バックアップファイルが保存されるとき、ファイル名に日付とアルファベットが追加される。例えば2007年5月17日にrevision.txtという名前のファイルを保存した場合には、revision.txt.20070517aという名前のファイルとして保存される。そしてその次の版が同じ日に保存された場合には、revision.txt.20070517bという名前のファイルとして保存されることになる。ただし一日に作成することのできるリビジョンは26個に限られていることに注意しよう。同じ日に27個目のリビジョンを保存しようとしたら、バックアップ用のファイルの名前が足りなくなったという警告が出る。

 :WriteBackupと入力するのが長すぎるなら、常套手段として以下のようにして~/.vimrcにコマンドのエイリアスを作成すると良いだろう。

map <F4> <Esc> :WriteBackup

 こうしておくと、コマンドモードでF4を入力するだけで:WriteBackupを実行することができるようになる。

 このようなエイリアスは、他のスクリプトの長いコマンドについても利用することができる。頻繁に使用するコマンドについては、実行するのに必要なキー入力の長さを減らすためのマップを作成しておくと良いかもしれない。

 さらに、Vimにはコマンドの補完機能があることも忘れてはいけない。コマンドの最初の数文字を入力して(この場合:Wri)Tabキーを押せば、Vimが候補を順番に表示していくので、この方法でもコマンドを最後まで入力する必要をなくすことができる。

writebackupVersionControl:さらなるリビジョン管理

 writebackupスクリプトには、writebackupVersionControlという姉妹スクリプトがある。writebackupVersionControlスクリプトは、writebackupスクリプトを使って書かれていて、Vimでのリビジョン管理をさらに便利なものにしている。

 writebackupスクリプトは、最新のリビジョンとまったく同じ以前のリビジョンがないかという確認を行わない。そのためまったく同一内容のリビジョンを複数保存してディスク空間を無駄にしてしまう可能性があった。そこでwritebackupVersionControlスクリプトをインストールすれば、:WriteBackupIsBackedupを実行して、最新版のファイルが以前のリビジョンのどれかと一致していないかどうかを確認することができる。一致しないことを確認したら、:WriteBackup(あるいは:WriteBackupに割り当てた何らかのショートカットキー)を実行して最新版を保存することができる。

 また、どのようなリビジョンがあるのかを確認したいときには:WriteBackupListVersionsを実行すれば、利用可能になっているリビジョンの一覧と、ファイルを最後に保存してからの経過時間が表示される。

 最新版とその直前のリビジョンの違いを確認する必要がある場合には、:WriteBackupDiffWithPredを使用すれば、ファイルの最新版ともっとも新しいバックアップに対してdiffを実行してその結果をVim内で表示することができる。

 2つのファイルに対してdiffを実行してみた後には、以前の版に戻したいということもあるかもしれない。そのようなときには:WriteBackupRestoreFromPredを使用すると、もっとも新しいリビジョンに戻すことができる。ただしさらにそれ以前のリビジョンに戻したい場合には手動で行なう必要がある。writebackupVersionControlスクリプトでは、古い版に戻す前にもっとも新しいリビジョンを示して本当に戻して良いのどうかをユーザに確認するので、最終的に気が変わった場合などには元に戻すのを直前にやめることができる。

SuperTab:VimでのTab補完

 Vimではデフォルトでは、Ctrl-p(補完候補を前方検索)とCtrl-n(補完候補を後方検索)を使うことで一度入力した単語を補完することができる。例えば「writebackupVersionControl」と一度入力したことがあれば、文字列のすべてを再び入力する必要はなく、「writeb」の後にCtrl-pを入力するだけでよい。これによりVimは単語を補完するか、あるいは「writeb」が複数の単語にマッチする場合には、すべての候補をドロップダウン表示する。

 これはとても便利な機能だが、このような自動補完のためにはTabキーを使用することに慣れている人もいる。その場合にはSuperTabスクリプトを使用すると、Tabキーでの自動補完(及び、その他少々)ができるようになる。

 SuperTabスクリプトを使用するには~/.vim/pluginsディレクトリにスクリプトをコピーしてVimを再起動するだけで良い。なおSuperTabスクリプトをインストールしてもCtrl-pCtrl-nを使用し続けることもでき、それらに加えて、補完候補の文字列を前方検索するためにTabを使用することが可能になる。