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> を押せばちゃんと消えます。
では,例題1 における各操作の意味を確認してから,次の例題 2 に進んでくだ さい。
機能 | コマンド | コメント |
テキストを入力する | 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 にはファイル名を書 きます。
cal displays a calender date set date and timeに変更します。
もし,画面に commands の内容が表示されなければ,ZZ を押して一旦 vi を終了し,ファイル名を確認してから,再度 vi を起動してください。
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 を起動して試し てみましょう。
vi の学習はこの辺で終りにします。時間に余裕のある人は,表 1 に挙げた他のコマンドも試してみてください。さらに興味があれば,マニュアル や書籍等でもっと詳しい操作法を調べましょう。