[ 実習トップページ ]

最低限 vi


  1. vi とは
  2. ファイルオープン/クローズ
  3. vi の基礎 - 状態遷移
  4. vi の基礎 - コマンドモード
  5. vi の基礎 - 入力モード
  6. 例題
  7. 参考 [vi の応用]
  8. 参考資料

vi とは

vi (VIsual editor) は多くのUNIX系OSの標準エディタです. つまり 大抵の UNIX マシンではじめから vi は用意されています. 「もしも」のトラブル時に利用できる可能性がもっとも高い エディタは vi であり, 特に管理者となる人は必ず習得 すべきツールといえます.

一方で vi の操作体系は, 直感的ではありません. そのため UNIX でファイル を編集するためのツールが, 他に数多く用意されています. vi の独特な操作 方法を嫌う初心者ユーザーも少なくありません.

vi の特長は次の通りです.

vi の根本思想は「ひたすら速く」です. vi には親切なメニュー画面はありま せん. しかし, それは vi がユーザーインターフェイスを軽視しているという 意味ではありません. 実際, vi ほどインターフェイスに神経を使っているエ ディターは他にないでしょう. 最少の労力で最大の成果をもたらすよう計算し 尽くされています. そのことは vi を使い込むほど実感できるはずです.

ここでは, そんな vi の使用法を学習していきましょう.

ファイルオープン/クローズ

vi はどんなテキストファイルを編集したいときにも使えます. 他のエディタ 同様, 編集するファイルをバッファ (メモリ内の一時的な領域) にコピーし, そのバッファの内容を編集することになります. ファイルに変更を反映させる にはバッファの編集内容をファイルにセーブしなくてはなりません. ※以下, 本ドキュメントでは特別な場合を除きこのバッファへの編集作業を"ファイル の編集"と記述しています.

ファイルオープン

vi を使うには, 次のように入力します.

$ vi [ファイル名]

引数のファイル名は既に存在するファイル名, あるいはこれから作りたい新規 のファイル名を入力します. ファイル名を省略した場合, バッファのみが準備 され, 保存時にそのファイル名を決定することになります.

ファイルクローズ

ファイルの編集内容を保存し作業を終了するには, コマンドモード (詳しくは vi の基礎 - 状態遷移 参照) であることを確認し (ESC キーを押せば よい), 以下の文字を入力します.

ファイルの編集作業を保存したり, 終了してコマンドプロンプトに戻るには幾つかの方法があります.

w 等の後に空白文字をいれ文字列を書き込むと, その文字列がファイル名とし て保存されます.

※ q:quit, w:write, !:強制的 という意味の組合せになっています.

vi の基礎 - 状態遷移

vi の起動, 終了を覚えたので, 最低限のファイル編集の方法を見ていくことにします.

vi では, キーボードのキーは 2 つの役割をはたします. 例えば「 a 」という キーは, 「 a 」という文字をテキスト画面に表示するために押されますが, 別 の場合には, もっと違った意味を持つ命令 (コマンド) と解釈されます.

キーがどちらの働きをするかは, vi の「モード」(状態)が決定します. これ らの vi の「モード」は, 「挿入モード」と「コマンドモード」と呼ばれます. vi を使う時に最も大切なことは, この2つのモードをきちんと区別すること です.

vi を起動させた直後は「コマンドモード」になっています. 「コマンドモー ド」では vi の終了, 編集中のファイルの更新, 文字の削除, 検索と置換, 行 番号の表示設定や, 他のプログラムの実行などを行うことができます.

文字を入力する場合は「入力モード」へ切り替えなければなりません. 「入力 モード」へ切り替えるには, a, A, i, I, o, O のいずれかを押します (それ ぞれ切り替わった後の動作が異なります). 「入力モード」では, 純粋に文字 を入力します. それ以外の動作を行うためには ESC キー (エスケープ・キー) を押して, 「コマンドモード」へ切り替えなければなりません. (※ ファイルオープン/クローズ で覚えた vi の終了やファイルの保存は 「コマンドモード」での操作でしたね.)

vi で初心者ユーザーが陥る混乱の原因は, この状態遷移を把握しきれてない ことが殆どです. 「わけわかんなくなったら ESC キー!」 と覚えておきましょ う. vi の状態が「コマンドモード」であることが保証されます.

images/vi-mode.gif

以上が vi の基礎です. 実際に使用する際には vi の基礎 - コマンドモード, vi の基礎 - 入力モード を参照してください. 時間があれば 例題 をやってみると良いでしょう.

vi の基礎 - コマンドモード

「コマンドモード」で実行する基本的なコマンドは次の通りです.

エディタの終了/ファイルの書き出し

クローズ を参照してください

カーソルの移動

h
    1文字左にカーソル移動(十字キーの「←」でも良い) 
j
    1文字下にカーソル移動(十字キーの「↓」でも良い) 
k
    1文字上にカーソル移動(十字キーの「↑」でも良い) 
l
    1文字右にカーソル移動(十字キーの「→」でも良い) 

※ "hjkl" は右手のマウントポジション(ブラインドタッチでの静位置)にあります.

文字入力(入力モードへの移行)

a
    現在いるカーソルの右側に挿入(追加:append) 
A
    現在いるカーソルの行末に挿入 
i
    現在いるカーソルの左側に挿入(挿入:insert) 
I
    現在いるカーソルの行頭に挿入 
o
    現在いるカーソルの下の行に挿入 (行を開ける:open) 
O
    現在いるカーソルの上の行に挿入 

文字削除

x
    カーソル位置の文字を1文字削除 
dd
    カーソルのある行を1行削除 

アンドゥ(取り消し)

u
    直前の変更を取り消す 

検索

/文字
    指定された文字を, 次の行より下へ検索. 
?文字
    指定された文字を, 前の行より上へ検索. 
n
    検索コマンドで指定された文字を, 正方向へ検索 ("/"では下へ, "?"では上へ) 
N
    検索コマンドで指定された文字を, 逆方向へ検索 ("/"では上へ, "?"では下へ) 

別ファイルの読込

r ファイル名
カーソル行の下にファイルを読み込んで挿入

vi の基礎 - 入力モード

「入力モード」で実行する基本的なコマンドは次の通りです.

ESC キー
    コマンドモードへ移行 
DEL キー
    左1文字削除(「コマンドモード」では利用できません) 

例題

それでは実際に vi を使ってみましょう. 以下の [練習1], [練習2] をやって みてください. ここで必要となるコマンドモード, 挿入モードのコマンドは vi の基礎 - コマンドモード, vi の基礎 - 入力モード を参照してください.

[練習1]

以下のような適当な文章を書き込んだファイルを vi をつかって実際に作り, rensyu.txt というファイル名で保存してみましょう.

実際には以下のようにキー入力していきます.

$ vi rensyu.txt  <-- rensyu.txt という名前の新規ファイルを viで開く

i                <-- 入力モードへ移る(現在いるカーソルの左側に挿入)
   :             <-- 編集                                          
   :

以下のコマンドで書き込んだ内容が表示されましたか? 表示されれば OK です.

$ cat rensyu.txt

[練習2]

先ほど編集したファイルを vi で開いて, 文字の削除, 行の挿入・削除などを 行い, 別名 (rensyu2.txt) で保存してみましょう. 一文字削除や一行削除はコ マンドモードからできます。(以下はその例)

$ vi rensyu.txt  <-- [練習1] で作成した rensyu.txt を viで開く
     :           <-- 適宜, 操作・編集してみましょう           
     :

以下のコマンドで変更した内容が表示されましたか? 表示されれば OK です.

$ cat rensyu2.txt

どうですか? うまく作成できましたか?

初歩的な vi の使い方はなんとなく理解できたでしょうか? 実際にはもっとい ろいろな使い方があるのですが 一度に覚える必要はありません. 実際にファ イルの編集をしながら, "かゆい"ところがあったらその都度新しい命令, 機能 を調べてゆけば良いです. 最低限, ファイルのオープンクローズ, 挿入モード とコマンドモード間の移り方("a,i,o"コマンドと ESC キー), 1文字削除 ("x"), コマンドモードでのカーソルの動かし方がわかっていれば, なんとか なります. もう少し高度な使い方をしたい人は 参考 [vi の応用] を参照し てみてください.

参考 [vi の応用]

上で紹介したのは, vi を使用する上での基本的な事項だけです. より便利に vi を使う参考として時間と興味のある方は御一読を.

※以下は断りのない限り「コマンドモード」で使用するコマンドです.

コマンドラインにおける vi

※いきなりですが, これは「コマンドモード」とは関係ありません.

ファイルをオープンし, 行18に位置づける

$ vi +18 [ファイル名]

ファイルをオープンし, 最初の"mustard greens"にカーソルを移動

$ vi +/"mustard greens" [ファイル名]

クラッシュしたファイルを回復し読み込む

$ vi -r [ファイル名]

読むだけのためにファイルを読み込む

$ view [ファイル名]

カーソルの移動

w
    右へ1単語分移動 
W
    右へ1単語分移動(区切り文字を越える) 
b
    左へ1単語分移動 
B
    左へ1単語分移動(区切り文字を越える) 
Enter キー
    下の行へ移動 
Backspace キー
    左へ1文字分移動 
スペース キー
    右へ1文字分移動 
H
    画面上端へ移動 
M
    画面中段へ移動 
L
    画面下端へ移動 
Ctrl-F
    1画面前へスクロール 
Ctrl-D
    半画面前へスクロール 
Ctrl-B
    1画面後ろへスクロール 
Ctrl-U
    半画面後ろへスクロール 
G
    ファイルの最終行へ移動 
21G
    行21へ移動 

文字削除

D
    行のカーソルから右の部分の削除 
:5,10 d
    5行から10行までを削除 

テキストの複写と移動

yy
    行の取り込みまたはコピー
Y
    行の取り込みまたはコピー
dd
    行の削除
P
    取り込みまたは削除された行を現在行の上に挿入
p
    取り込みまたは削除された行を現在行の下に挿入
:1,2 co 3
    行1から行2までを行3の下へコピー
:4,5 m 6
    行4から行5までを行6の下へ移動

情報の表示

Ctrl-G
    ファイル名, 行数, 位置の表示
:set nu
    行番号の表示
:set nonu
    行番号の非表示
:set ruler
    ルーラーの表示
:set noruler
    ルーラーの非表示
:set showmode
    入力モードの表示
:set noshowmode
    入力モードの非表示

画面の更新

Ctrl-L
    画面の再描画

参考資料


Last Updated: 2007/08/22 (村上 真也), Since: 2007/08/21 (森川 靖大)