vi は UNIX に標準的に備わっている代表的なテキストエディタです。 この演習で vi の雰囲気を体験しておきましょう。 最初は使いにくいと感じるかもしれませんが,慣れるときっと幸せになれます。
vi を起動するには,コマンド行で
vi fileを実行します。file には,新規に作成するファイルの名前や,編集した い既存のファイル名を書きます3。
vi はモードという概念を持つエディタです。現在どのモードにいるかによって, 可能な操作が異なります。
| i, a, o, O, cw, cc ... | ||
|
|
||
|
|
|
|
|
|
||
| <ESC> |
コマンド入力モードでは文字の入力はできません。 i や a 等の vi のコマンドを入力し,次に紹介 する文字入力モードに移行してから,文字入力をします。
ただし,<ENTER> や <ESC> を押す前であれば,入力したばかりの 文字は <BS> (バックスペースキー) または CTRL-h で削除でき ます5。<BS> を続けて押すと,さらにその前に入力した文字を 削除できます。なお,<BS> を押しても,カーソルが左に動くだけ で元の文字は表示されたままになっているかもしれませんが,これ らは無視してください。<ESC> を押せばちゃんと消えます。
| 機能 | コマンド | コメント |
| テキストを入力する | i text <ESC> | カーソルの位置にtextを挿入する (insert) |
| a text <ESC> | カーソルの右にtextを追加する (append) | |
| o text <ESC> | 今いる(カーソルがある)行の下にtextを入れる | |
| O text <ESC> | 今いる行の上にtextを入れる | |
| ファイルを保存する | :w <ENTER> | 編集中のファイルを元の名前のまま保存する |
| :w file <ENTER> | 編集中のファイルを file として保存する | |
| vi を出る | ZZ (:x <ENTER>) | ファイルを保存し vi を出る |
| :q! <ENTER> | ファイルを保存せず vi を出る | |
| カーソルを動かす | h ( |
左隣に移動する |
| l エル (<SPACE> または |
右隣に移動する | |
| k ( |
上に移動する | |
| j (<ENTER> または |
下に移動する | |
| 0 ゼロ | 行頭に移動する | |
| $ | 行末に移動する | |
| G | 最後の行に移動する | |
| n G | 第n行に移動する | |
| テキストを削除する | x | 今いる文字(カーソルが乗っている文字)を削除する |
| X | カーソルの左隣の文字を削除する | |
| dw | 今いる単語を削除する | |
| dd | 今いる行を削除する | |
| テキストを検索する | / string <ENTER> | stringが最初に現れる位置にカーソルを移動する |
| n | 一番最近行った検索を繰り返す | |
| テキストを置換する | r character | 今いる文字をcharacterで置換する |
| cw text <ESC> | 今いる単語を text で置換する | |
| cc text <ESC> | 今いる行を text で置換する | |
| 変更を繰り返す | . | 直前のコマンドによる変更を繰り返す |
| 変更を取り消す | u | 直前のコマンドによる変更を取り消す(undo) |
| テキストをコピーする | yy | 今いる行を名前なしバッファにコピー(ヤンク)する |
| p | 名前なしバッファ中のテキストを挿入(プット)する |
括弧 () は当該操作を他のコマンドで行えることを表します。 そのコマンドを括弧内に併記しています。
斜体字 (italic) の箇所は具体的なものに置き換えて記述します。 例えば,text には入力テキストを,file にはファイル名を書 きます。
vi を使ってファイルの中身が
この操作によって コマンド入力モードから文字入力モードに移行しました。 これ以降,カーソル位置に文字を入力できます。
この操作によって,文字入力モードからコマンド入力モードに移行しま した。
cal displays a calender date set date and timeに変更します。
もし,画面に commands の内容が表示されなければ,ZZ を押して一旦 vi を終了し,ファイル名を確認してから,再度 vi を起動してください。
これにより,文字入力モードに移行しました。 コマンド i と a の違いを表 1 で確認してください。
displays a calender)をタイプします。
入力ミスは <BS> で修正できます。
これから who を削除しますが,<BS> では文字入力モードで打ち込んだばかり の文字しか消せませんので,ここでは文字削除のコマンドを使います。 まず x を押してカーソルの乗っている一文字 (w) を消してみましょう。
一行すべてを削除するコマンドもあります。 dd と打って,カーソルの乗っている 3 行目を消してください。
cal displays a calender date display or set date and timeに変更してください。
この問題では,ファイルの内容をきれいに整えましょう。コマンド説明 の出だしが揃っていなければ,揃えてください。 不要な空白行があれば,行削除の vi コマンドで削除してください。
注意: vi は行単位でテキストを編集するエディタなので, 改行文字を消すことで 複数の行を一行にまとめたりはできません。
さて,vi のコマンド J は何をするためのコマンドでしょう? vi のオンラインマニュアルを表示して,J と記されている箇所を検索して 調べてみましょう。一回の検索で目的の記述が現れなければ,再度,同 じ検索をしてみてください。J の用途がわかったら,vi commands で vi を起動し,試してみましょう。変更をファイルに保存せずにvi を 終了する方法は,表 1 に載っています。
vi の学習はこの辺で終りにします。時間に余裕のある人は,表 1 に挙げた他のコマンドも試してみてください。さらに興味があれば,マニュアル や書籍等でもっと詳しい操作法を調べましょう。