最低限 UNIX / Linux [I]

  1. ルートと一般利用者
  2. アカウントの作成
  3. パスワードの変更
  4. ログイン
  5. ログアウト

  6. ユーザー情報に関するファイル
  7. パスワードセキュリティー
  8. UNIX の代表的なコマンド
  9. マルチユーザを実感する
  10. 最低限 vi

9. 最低限 vi

[9.1] vi とは

vi は UNIX(Linux)における基本的なエディタです。 どんな UNIX でも大抵 vi は用意されていますし、 vi を元としたツール、 vipw や vigr 等が多く存在することから、 そのことを推し量ることができます。

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

しかし vi は、特に管理者となる人は必ず習得すべきツールです。 「もしも」のトラブル時に、 これほど利用できる可能性の高いエディタはないためです。

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

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

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


[9.2] vi の起動

vi を使うには、次のように入力します。

$ vi [ファイル]

引数のファイルを省略した場合、新規ファイルが作成され、 保存時にそのファイル名を決定しなければいけません。


[9.2] vi の基礎 - 状態遷移

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

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

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

文字を入力する場合は「挿入モード」へ切り替えなければなりません。 「挿入モード」へ切り替えるには、a, A, i, I, o, O のいずれかを押します (それぞれ切り替わった後の動作が異なります)。 「挿入モード」では、純粋に文字を入力します。 それ以外の動作を行うためには ESC キー(エスケープ・キー)を押して、 「コマンドモード」へ切り替えなければなりません。

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

状態遷移図

次に、各モードをより詳しく紹介します。


[9.3] vi の基礎 - コマンドモード

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

[9.3.1] エディタの終了

:wq
ファイルを保存して終了
:q
普通に終了
:q!
ファイルへの変更を保存しないで終了

[9.3.2] カーソルの移動

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

[9.3.3] 文字入力(挿入モードへの移行)

a
現在いるカーソルの右側に挿入(追加:append)
A
現在いるカーソルの行末に挿入
i
現在いるカーソルの左側に挿入(挿入:insert)
I
現在いるカーソルの行頭に挿入
o
現在いるカーソルの下の行に挿入
O
現在いるカーソルの上の行に挿入
r
一文字置換 (置換:replace)
R
ESC を押すまで置換
s
ESC を押すまで一文字を複数文字で置換

[9.3.4] 文字削除

x
カーソル位置の文字を1文字削除
dd
カーソルのある行を1行削除して記憶
数dd
カーソルのある行から数の行分削除して記憶
例. 5 行削除したい場合: 5dd

[9.3.5] カーソル行のコピー

yy
カーソル行を1行コピー
数yy
カーソルのある行から数の行分コピー
例. 10 行記憶したい場合: 10yy

[9.3.6] コピーした行の貼り付け

p
コピーした行をカーソル位置の下の行に貼り付ける
P
コピーした行をカーソル位置の上の行に貼り付ける
注: 行のコピーは dd, yy を使う

[9.3.7] アンドゥ(取り消し)

u
直前の変更を取り消す

[9.3.8] 検索

/文字
指定された文字を、次の行より下から検索。
n
上のコマンドで指定された文字を、続けて下方向へ検索
N
上のコマンドで指定された文字を、続けて上方向へ検索

[9.3.9] 読込と保存

:w
編集中のファイルを上書き保存
:wファイル名
指定されたファイル名で保存
:rファイル名
カーソル行の下にファイルを読み込んで挿入

[9.4] vi の基礎 - 挿入モード

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

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

[9.5] vi の応用

上で紹介したのは、vi を使用する上での基本的な事項だけです。 vi には、さらに便利に使えるよう、豊富なコマンドが用意されています。 以下ではその一部を紹介しましょう。

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

[9.5.1] コマンドラインにおける vi

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

$ vi +18 [ファイル名] ファイルをオープンし、行18に位置づける
$ vi +/"mustard greens" [ファイル名] ファイルをオープンし、最初の"mustard greens"にカーソルを移動
$ vi -r [ファイル名] クラッシュしたファイルを回復し読み込む
$ view [ファイル名] 読むだけのためにファイルを読み込む

[9.5.2] カーソルの移動

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へ移動

[9.5.3] 文字削除

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

[9.5.4] テキストの複写と移動

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

[9.5.5] 情報の表示

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

[9.5.6] 画面の更新

Ctrl-L 画面の再描画

[9.5.7] 保存と終了

ZZ 修正内容を保存してviを終了
:w! リードオンリーモードの時に強制的に保存



>> 最初のページへ戻る

最終更新日: 2005/10/13(小松研吾) Copyright © 2006 inex