スポンサーリンク

入門vi

入門vi ★★★★☆

1992年出版の第5版。
オライリー本は敬遠していた。
前にpearlの本を買ったら、英語直訳といった感じで日本語文を読み砕くのに難儀したからだ。これだったら原書の方が読みやすいのではと思ったほどだ。
ところがこの本の訳は日本語的に問題なく、日本語文の理解に能力を割かなくて良く読みやすかった。
★4つ。

p.19
viはvisual editorの略で、「ヴィアイ ”vee-eye”と発音する」

Visual Editorの頭のviだけとって、ヴィと読むもんだと思っていた。

p.46 削除に関する問題点
しかし、最近の削除内容を復元したいのならpコマンドを使えばOKだ。viは9個の番号付きの削除バッファに、最近の9回の削除内容を保存しているからだ。たとえば自分が復元したいのが今から3回目の削除内容だとわかっているなら、次のようにタイプすればよい。

"3p

すると、バッファ番号3の内容がカーソルの下の行に貼り込まれる。
この手が使えるのは行を削除した場合だけである。単語などの行に一部はバッファには保存されない。

bashにもコマンド履歴があって呼び出せたな。
でも、何番目の削除内容かは覚えていないだろうから、使わなそうだ。

p.47 テキストの移動
1行以上の行を削除した場合にはpによってカーソル下にテキストが新たに挿入されるが、1行未満のテキストを削除したときにはpはそれをカレント行のカーソル位置の後ろに入れる。

この本にはしっかり書かれている。

p.50 テキストのコピー
ヤンクには削除と同じバッファが使われるので、新たに削除したりヤンクしたりすると、ヤンクバッファのもとの内容が置き換わる。

確かに経験上そうだ。

p.61 zによるスクロール
画面を上下にスクロールする一方でカーソルをもとの行に残したいときには、次のようなzコマンドを使えばよい。

z RETURN カレント行が画面の一番上に表示されるようにスクロール
z. カレント行が画面の中央に表示されるようにスクロール
z- カレント行が画面の一番下に表示されるようにスクロール

これは知らなかった。使うかも知れないし、使わないかも知れない。

p.77 削除部分の復活
復元したい削除内容の入ったバッファがどれか分からない場合でも、何度も何度も"npをタイプする必要はない。pのあとにuと繰り返しコマンド(.)をタイプすれば、バッファ番号が自動的に繰り上がるからだ。だから、次のようにすれば番号付きバッファを順に確認していける。

"1pu.u.u.…

こうするとバッファの内容が順番にファイルに表示される。毎回uを押す度に復元したテキストが取り除かれ、ドット(.)を押すとその次のバッファの内容がファイルに復元されるのだ。

p.82 exコマンド
殆どの編集作業はviで済ませた方が簡単だが、ファイルの複数の部分に大規模な変更を加えたいような場合には、exの行指向という性格がメリットになるのだ。

p.87 行アドレス用シンボル
ドット(.)はカレント行、$はファイルの最終行をそれぞれ表す。%はファイルの全ての行という意味で、1,$という組み合わせと同じだ。こういうシンボルは絶対行アドレスと組み合わせてもかまわない。例を挙げよう

:.,$d カレント行からファイルの最後まで削除
:20,.m$ 20行目からカレント行までをファイルの最後に移動
:%d ファイル中の全部の行を削除
:%t$ 全部の行をコピーして、ファイルの終わりに追加(同じ内容を2つ続ける)

ファイル中の全部の行を削除は、ggVGddをしてた。:%dの方がタイプ量少しだけ節約できる。

p.113 パターンを利用したブロック移動
例として、150ページ文のリファレンスマニュアルを担当しているとしよう。どのマニュアルページもSYNTAX、DESCRIPTION、PARAMETTERSという3種類の共通の見出しが付いた3つの段落で構成されている。

.Rh "SNTAX"
.nf


.Rh "DESCRIPTION"
Writes the fields of a system data structure into


.Rh "PARAMETERS"
.IP "fBfilename"

ここで、DESCRIPTIONの段落をSYNTAXの段落の上に移す決定が下されたとしよう。しかし次のようなパターンマッチングを利用すれば、150ページ全文の各テキストブロックをなんと1回のコマンドで移動できてしまうのだ。

:g /SYNTAX/,/DESCRIPTION/-1 mo /PARAMETERS/-1

このコマンドは、SYNTAXという単語のある行から、DESCRIPTIONという単語直ぐ前の行(/DESCRIPTION/-1)までのテキストブロックを処理する。そしてブロックが、PARAMETTERSのすぐ前の行(/PARAMETERS/-1)に移動される(mo)のだ。exは、指定した行の次にしかテキストを入れられない点に注意しよう。だから、ある行の上にテキストを入れるようにexに命じるには、まず-1を使って1行上に移動してからその下にテキストを入れなければならない。

確かにこれは強力だ。

商品説明
Unix系のテキストエディタといえばEmacsとviが定番だ。機能面はEmacsにゆずるが、viはたいていのUnix系OSに搭載されており、またEmacsが入っていないような環境でも必ず標準で搭載されているので、管理者・開発者は最低限使えることが望ましい。
本書はvi専門の解説書である。たいていのviの解説はなんらかの解説書のおまけでついていることが多いのだが、本書ではviとviのクローンであるvimについての基本操作から応用に至るまでを取り扱った本格的な解説書だ。viの動作としくみ、Unix系OSに特有のファイルのアクセス制限から生じる問題の対処などの初心者がつまずきやすい部分の対処、簡単な文書編集の解説、そして、中級のコマンド解説としてviの起動オプションやバッファの活用の解説、exエディタの利用方法、パターンマッチングを利用した編集、さらに、viのカスタマイズをはじめとする高度なviの利用方法について説明している。

vimについてもviからの拡張部分を中心に解説しているので、viをマスターしたらより高機能のvimについても学ぶことができる。実際の編集作業を通してコマンド・テクニックの利用の仕方を解説しているので、初心者でもすぐに理解することができるだろう。また巻末には、viとexのコマンド、環境オプションをはじめとする付録も収録されている。

viは本格的にプログラミングするためのエディタとしてはもの足りないかもしれないが、テキスト編集には十分強力な機能を実装している。本格的に学びたい人にぜひおすすめしたい1冊だ。(斎藤牧人)

内容(「BOOK」データベースより)
Emacsと人気を二分するスクリーンエディタであるviについての、唯一といっていい本格的な解説書。manページでは得られないような、コマンドの便利な使い方、応用例、ファイル編集のテクニックを初心者にもわかりやすく解説した。今回の改訂では、代表的なviクローンであるvimを解説した章と、付録にクローンごとの機能比較やインターネット上のviに関する情報やトピックを追加。vimについての解説は、基本的なviの理解を前提に、vimならではの高度な機能の使い方や作業効率を上げるノウハウなどをカバーするようにした。