あちこちをViモードにしていこう
シェルだってvi
Linuxの標準シェルであるbashの編集コマンドは、デフォルトではemacs系のコマンド体系になっており、「Ctrl-A」で行頭に戻ったり、「Ctrl-P」で履歴をたどったりすることができる。実はこの編集モードをviにすることができるのだ。
では早速やってみよう。シェルを起動したら以下を入力する。これだけで、bashがviモードに変更される。
$ set -o vi
この状態で以下を入力してみよう。
$ ls -l
これでファイルの一覧が表示される。ここで例えば履歴をたどろうとして、いつものように「Ctrl-P」としても、以下のように表示される。
$ ^P
viモードになった今は、まず「Escキー」を入力してノーマルモードに移行、続いて「上」を意味する「K」をタイプすることで履歴がたどれる。
バイナリファイルだってvi
いわゆる「バイナリエディター」もviモードで使うことができる。ただし、これを実現するには専用ソフトウェア「bvi」が必要だ。僕が確認したところ、Debian 4.0(Etch)やGentoo Linuxにはパッケージがあるが、CentOSには入っていなかったので、ここでインストール方法についても説明しておく。インストールは至って簡単だ。
まずはbviのオフィシャルサイト(http://bvi.sourceforge.net/)のDownloadページから、パッケージを入手しよう。今回は2008年8月6日現在で最新版の「bvi-1.3.2-1.i386.rpm」をダウンロードした。ダウンロードしたら以下を実行する。
$ rpm -Uhv bvi-1.3.2-1.i386.rpm
これでインストールは完了だ。起動はVimと同様、以下を実行する。
$ bvi /usr/bin/bvi
大きなファイルの先頭だけを編集したい、というときは以下のようにサイズを指定することができる。
$ bvi -s 1000 CentOS5-s001.vmdk
あるいは、以下のように編集するアドレスの範囲を指定すれば、「メモリ不足で起動できない」といったことも避けられる。
$ bvi -b 16 -e 256 CentOS5-s001.vmdk
さて起動した後の操作は基本的にはviと同じだ。あくまでもviと同じであって、Vimほどは多様なコマンドを使えない。また、バイナリファイルを扱うという性質上、デフォルトでは挿入モードは使えず、「A」をタイプして追記モードに入るか、「D」でカーソル位置以降を削除するか、「R」で置換モードに入るか、ということになる。リスクを承知した上で挿入モードに入るときは「:set memmove」とする。
バイナリ部分を検索するときは「/」や「?」ではなく「\」や「#」を使うなど、バイナリファイルを扱うことによる違いがいくつかあるが、詳しくは上記サイトの「Quick Tutorial」を確認してほしい。