Web検索で出てきたページのコピペだけど、元のページが消えてしまうとまた解らなくなるので・・・(^^;)
んで、書くのはエディタの使い方(ぉ
-----ここから-----
viの基本操作
viは、UNIXに標準で備わっているテキストエディタである。多少とっつきにくい面があるが、慣れると高速で編集作業ができるようになる。ここでは、viの使い方について紹介する。
viの起動
viを起動するには、単純に
% vi
と入力しても構わないし、またファイル名が決まっていれば(または既に存在するファイルを開くのであれば)下記のように入力する。
% vi ファイル名
コマンドモード(移動)
viを起動直後は、コマンドモードになっていてファイル上で移動などの処理ができる。注意すべきことは、 コマンドモードのままでは文字入力できず、文字入力するためには入力モードへ切り替える必要がある、ということである。
以下、移動に関するコマンドを記述する。
操作 結果
1文字の移動 h 左
j 下
k 上
l 右
1単語の移動 w 次の単語の先頭 (word)
b 現在または前の単語の先頭
e 現在または次の単語の末尾
文字、単語の移動には、数字を組合わせる事で、一気に移動できる。例えば、「5w」と入力すると、5つ先の単語の先頭に移動する
行での移動 0 行頭
^ 行の最初の文字(スペースは除く)
$ 行末
半画面分の移動 Ctrl + d 下 (down)
Ctrl + u 上 (up)
1画面分の移動 Ctrl + f 下 (forward)
Ctrl + b 上 (backward)
特定の行への移動 行数G 指定した行への移動※1
(例えば「10G」と入力すると、10行目へ移動)
(ファイルの先頭へ移動するには「1G」と入力)
G 最終行への移動
※1: 行数を表示させるには、コマンドモードにて、
:set nu
逆に行数を表示させないためには、
:set nonu
と入力する。nu (number), nonu (no number)と覚えよう。
コマンドモードと入力モードの切り替え
操作 結果
コマンドモード→入力モード i カーソルの位置に文字を入力
I カーソルのある行頭に文字を入力
a カーソルの右側に文字を入力
A カーソルのある行末に文字を入力
o カーソルのある行の次の行頭に文字を入力
O カーソルのある行の前の行頭に文字を入力
入力モード→コマンドモード Esc
コピーと削除
操作 結果
コピー yl 1文字のコピー
(3文字のコピーはy3l, 3yl のどちらでも可)
yw 1単語のコピー
(3単語のコピーはy3w, 3yw のどちらでも可)
yy 1行のコピー
(3行のコピーはy3y, 3yy のどちらでも可)
y0 行頭からカーソルの直前までのコピー
y$ カーソルの位置から行末までのコピー
削除 x 1文字の削除
dl 1文字の削除
(3文字の削除はd3l, 3dl のどちらでも可)
dw 1単語の削除
(3単語の削除はd3w, 3dw のどちらでも可)
dd 1行の削除
(3行の削除はd3d, 3dd のどちらでも可)
d0 行頭からカーソルの直前までの削除
d$ カーソルの位置から行末までの削除
貼り付け p カーソルの右側に貼り付け
P カーソルの左側に貼り付け
上記の操作でコピー、または削除された内容がバッファに記録され、その内容はコピー、削除の操作の度に上書きされる。コピー、削除を繰り返しても同一の内容を貼り付けたい場合には、下記のように名前つきバッファを利用する。貼り付けたい内容が多数に上るとき、非常に役立つ。
例えば、3行分のコピーをaという名前のバッファに保存するには、
"a3yy
のように行う。コピーでも削除でも基本は同じであり、名前つきバッファは、a~zの26個使用できる。名前つきバッファに保存した内容を貼り付けるには、上記の例では、
"ap
のように行う。pでもPでもどちらでも使える。
複数ファイル間での操作
複数のファイルを開くには、下記のように、viの後にファイル名を記述する。
% vi ファイル1 ファイル2 ... ファイルn
ファイル間を移動するには、コマンドモードで以下のような操作を行う。
操作 結果
ファイル間の移動 :n ファイルn → n+1(次のファイルへ移動: next)
:rew 最後のファイル → 先頭のファイル(rewind)
複数のファイル間でコピー、貼り付けを行いたい場合には、名前つきバッファを使用する。上書きしない限り、viを終了するまで名前つきバッファの内容は保持される。
保存と終了
操作 結果
:w 保存
:w 別ファイル名 別名で保存
:q 終了
:wq 保存して終了
:wq 別ファイル名 別名で保存 して終了
:q! 強制終了(保存なし)
検索と置換
操作 結果
置換 s 1文字置換(置換後は入力モードになる)
r 1文字置換(置換後はコマンドモードになる)
R 上書き(入力をやめるまで上書きで置換される)
cw カーソルの位置から単語の終わりまで置換
また、ファイル全体、あるいは一定区間の置換を一気に行いたい場合には、下記のように実行すると便利である。
操作 結果
検索(同一行) f 文字 文字 を検索(右方向へ)
F 文字 文字 を検索(左方向へ)
; 次の検索
検索(ファイル全体) /キーワード キーワードを検索(下方向へ)
?キーワード キーワードを検索(上方向へ)
n 次の検索
N 前の検索
置換 :s/文字列A/文字列B/ 文字列Aを文字列Bに置換
(カーソルのある行で、最初に合致するパターンのみ置換)
:s/文字列A/文字列B/g 文字列Aを文字列Bに置換
(カーソルのある行で、合致するパターン全てを置換)
:s/文字列A/文字列B/c 文字列Aを文字列Bに置換
(カーソルのある行で、最初に合致するパターンのみ置換
(置換前に確認:yで置換、nで置換なし)
:%s/文字列A/文字列B/g 文字列Aを文字列Bに置換
(全ての行で、合致するパターン全てを置換)
:10,50s/文字列A/文字列B/g 文字列Aを文字列Bに置換
(10行目から50行目までの間で、合致するパターン全てを置換)
:10,$s/文字列A/文字列B/g 文字列Aを文字列Bに置換
(10行目から最終行までの間で、合致するパターン全てを置換)
より複雑な置換を実現するためには、正規表現を利用することも可能であるが、ここでは説明しない。
その他
操作 結果
U 取り消し(Undo)
J 行の連結(カーソルのある行へ、下の行が連結)