vi (VIsual extended editor) は多くのUNIX系OSの標準エディタです. つまり大抵の UNIX マシンではじめから vi は用意されています. システムアカウントの変更を vi を元としたツール, vipw や vigr 等でおこなうのは, 確実に使えるエディタが vi であるためです. 「もしも」のトラブル時に利用できる可能性がもっとも高いエディタは vi であり, 特に管理者となる人は必ず習得すべきツールといえます.
一方で vi の操作体系は, 直感的ではありません. そのため UNIX でファイルを編集するためのツールが, 他に数多く用意されています. vi の独特な操作方法を嫌う初心者ユーザーも少なくありません.
vi の特長は次の通りです.
vi の根本思想は「ひたすら速く」です. vi には親切なメニュー画面はありません. しかし, それは vi がユーザーインターフェイスを軽視しているという意味ではありません. 実際, vi ほどインターフェイスに神経を使っているエディターは他にないでしょう. 最少の労力で最大の成果をもたらすよう計算し尽くされています. そのことは vi を使い込むほど実感できるはずです.
ここでは, そんな vi の使用法を学習していきましょう.
vi はどんなテキストファイルを編集したいときにも使えます.
他のエディタ同様, 編集するファイルをバッファ(メモリ内の一時的な領域)
にコピーし, そのバッファの内容を編集することになります.
ファイルに変更を反映させるには
バッファの編集内容をファイルにセーブしなくてはなりません.
※以下, 本ドキュメントでは特別な場合を除き
このバッファへの編集作業を"ファイルの編集"と記述しています.
vi を使うには, 次のように入力します.
$ vi [ファイル名]
引数のファイル名は既に存在するファイル名, あるいはこれから作りたい新規のファイル名を入力します. ファイル名を省略した場合, バッファのみが準備され, 保存時にそのファイル名を決定することになります.
:q
| vi を終了する |
:q!
| バッファでの編集内容を放棄し vi を強制的に終了する |
:w |
バッファの内容をファイルに保存 |
:w! |
バッファの内容を強制的にファイルに保存 |
:wq |
バッファの内容をファイルに保存し, vi を終了する. |
ZZ |
バッファの内容をファイルに保存し, vi を終了する. |
vi の起動, 終了を覚えたので, 最低限のファイル編集の方法を見ていくことにします.
vi では, キーボードのキーは2つの役割をはたします. 例えば「a」というキーは, 「a」という文字をテキスト画面に表示するために 押されますが, 別の場合には, もっと違った意味を持つ命令(コマンド)と解釈されます.
キーがどちらの働きをするかは, vi の「モード」(状態)が決定します. これらの vi の「モード」は, 「挿入モード」と「コマンドモード」と呼ばれます. vi を使う時に最も大切なことは, この2つのモードをきちんと区別することです.
vi を起動させた直後は「コマンドモード」になっています. 「コマンドモード」では vi の終了, 編集中のファイルの更新, 文字の削除, 検索と置換, 行番号の表示設定や, 他のプログラムの実行などを行うことができます.
文字を入力する場合は「挿入モード」へ切り替えなければなりません.
「挿入モード」へ切り替えるには, a, A, i, I, o, O
のいずれかを押します(それぞれ切り替わった後の動作が異なります).
「挿入モード」では, 純粋に文字を入力します. それ以外の動作を行うためには
ESC キー(エスケープ・キー)を押して,
「コマンドモード」へ切り替えなければなりません.
(※1.2 で覚えたviの終了やファイルの保存は「コマンドモード」での操作でしたね.)
vi で初心者ユーザーが陥る混乱の原因は, この状態遷移を把握しきれてないことが殆どです. 「わけわかんなくなったら ESC キー!」 と覚えておきましょう. vi の状態が「コマンドモード」であることが保証されます.
「コマンドモード」で実行する基本的なコマンドは次の通りです.
h
j
k
l
a
A
i
I
o
O
x
dd
u
/文字
?文字
n
N
:r ファイル名
「挿入モード」で実行する基本的なコマンドは次の通りです.
ESC キー
DEL キー
初歩的な vi の使い方はなんとなく理解できたでしょうか? 実際にはもっといろいろな使い方があるのですが 一度に覚える必要はありません. 実際にファイルの編集をしながら, "かゆい"ところがあったら その都度新しい命令, 機能を調べてゆけば良いです. 最低限, ファイルのオープンクローズ, 挿入モードとコマンドモード間の移り方("a,i,o"コマンドと ESC キー), 1文字削除("x"), コマンドモードでのカーソルの動かし方が わかっていれば, なんとかなります.
With a screen editor you can scroll the page, move the cursor, deloete lines, and more, while seeing the result of your edits as you make them. |
[確認方法]
以下のコマンドで書き込んだ内容が表示されましたか? 表示されれば OK です.
$ cat rensyu.txt
どうですか? うまく作成できましたか? では, 次は >>シェルスクリプト を vi を使って作成してみましょう.
上で紹介したのは, vi を使用する上での基本的な事項だけです. 以下の内容は授業では説明しませんが, より便利に vi を使う参考として時間と興味のある方は御一読を.
※以下は断りのない限り「コマンドモード」で使用するコマンドです.
$ vi +18
[ファイル名] |
ファイルをオープンし, 行18に位置づける |
$ vi +/"mustard greens"
[ファイル名] |
ファイルをオープンし, 最初の"mustard greens"にカーソルを移動 |
$ vi -r
[ファイル名] |
クラッシュしたファイルを回復し読み込む |
$ view [ファイル名]
|
読むだけのためにファイルを読み込む |
w
W
b
B
Enter キー
Backspace キー
スペース キー
H
M
L
Ctrl-F
Ctrl-D
Ctrl-B
Ctrl-U
G
21G
D
:5,10 d
yy |
行の取り込みまたはコピー |
Y |
行の取り込みまたはコピー |
dd |
行の削除 |
P |
取り込みまたは削除された行を現在行の下に挿入 |
p |
取り込みまたは削除された行を現在行の上に挿入 |
:1,2 co 3 |
行1から行2までを行3の下へコピー |
:4,5 m 6 |
行4から行5までを行6の下へ移動 |
:set nu |
行番号の表示 |
:set nonu |
行番号の非表示 |
:set ruler |
ルーラーの表示 |
:set noruler |
ルーラーの非表示 |
:set showmode |
入力モードの表示 |
:set noshowmode |
入力モードの非表示 |
Ctrl-G |
ファイル名, 行数, 位置の表示 |
Ctrl-L |
画面の再描画 |
最終更新日: 2004/10/22(山田 由貴子) | Copyright © 2004 inex |