viコマンド
システム管理者 Unixパワーユーザのためのコマンドリファレンス

[ Linux / Unix リファレンスガイド ] ⇒ [ コマンドリファレンス ] ⇒ [ viコマンド ]



vi

Unix標準のテキストエディタ。操作が独特で癖がある使用感からviを嫌う人も多いが、慣れると非常に便利な上、どのUnix環境でもデフォルトでインストールされているためぜひともマスターしておきたい。vi が手になじんでくると他のEDITORを使うのがおっくうになるくらいに便利なので、日頃から使用して慣れておく。


オプション
b バイナリモード
R 読み込み専用でファイルオープン
+num ファイルオープン時に指定した行に移動する


最低限必要な基本操作
j 下へ移動
k ↑へ移動
l →へ移動
h ←へ移動
i カーソル位置に文字を挿入する。挿入が終わったらESCキーを押して編集モードを抜ける。
x カーソル位置の文字を一文字消去する
:w 上書き保存する
:wq 上書き保存してviを終了する
:q viを終了する(ファイル未保存状態では使用できない)
:q! viを強制終了する
ESC INSERTモードなどテキスト編集モードを終了する


最低限必要な基本操作

いろいろな機能があるが、必要最低限の操作のみを覚え、後はわずかなコマンドを覚えるだけで格段にファイル編集が速くなる。基本操作をまず習得し、その後、少しずつ個人で頻繁に使用するコマンドをマスターしく。

◆ファイルを開いて編集する
$ vi sample.txt


◆最低限必要な操作のみマスターする

viが苦手な場合は最低限これだけ覚えておけば良い。
--------------------------------------------------------------------
1.カーソル移動
2.文字挿入
3.文字削除
4.上書き保存
5.強制終了
--------------------------------------------------------------------

・カーソルの移動
HJKLキーでカーソルを上下左右に移動する。HJKLキーでのカーソル移動はviの魅力の一つなので、テンキーの下辺りによくある↑↓←→キーは使わないように日頃から意識しておく(Linuxはともかく、Unixではそもそもviで↑↓←→キーを使えない)。

・文字の入力
編集をしたいところまでカーソルを移動させて i で文字を挿入するモードへ入り、好きな文字を追加する。
文字入力が終わったら、ESC キーを押して編集モード(文字挿入など)から抜ける

・文字の消去
カーソルを移動させ、x キーを押すとその場で文字が一文字消える

・上書き保存
編集が終わったら、:w で上書き保存する。:wqだと上書き保存してviを終了する

・強制終了 [★超重要]
:q! でviを強制終了させる。
vi に不慣れな時期はファイルが修復不能なくらい編集ミスが連続するので、そのような場合は保存をせずviを強制終了させる。

上記のみ最低限度覚えておけばサーバでの作業はなんとかなる。



一歩進んだvi操作
カーソルの示す文字を一文字だけ置き換える
R ESCを押すまで、文字を上書きする
A カーソル行の最後尾に文字を挿入
o カーソル行の下に新しい行を追加し文字入力
dd カーソル行を削除する(切り取り)
p クリップボードを貼り付け
数字dd カーソルの行から下方へ数字分だけ行削除する
yy 行全体をクリップボードにコピー
yyp 行を複製する
0 行の先頭へ移動
$ 行の最後尾へ移動
- -

一歩進んだvi操作

いろいろな操作コマンドがあるが、ここらを覚えておくだけでもテキスト編集が格段に速くなる。

1.r
カーソルの場所を一文字だけ置き換え (2 → a)
--------------------------------------------------------------------
01a3456789
--------------------------------------------------------------------

2.R
カーソルの場所から文字列を上書きで置き換え
--------------------------------------------------------------------
01abcd6789
--------------------------------------------------------------------

3.A
カーソル行の最後尾に文字挿入 abcd
--------------------------------------------------------------------
0123456789abcd
--------------------------------------------------------------------

4.o
カーソルの行の下に新規に1行追加し、文字を入力する
--------------------------------------------------------------------
000000000000
aaaa
111111111111
222222222222
--------------------------------------------------------------------

5.dd
カーソルの行を削除する

111111111111の行でdd実行
--------------------------------------------------------------------
000000000000
222222222222
333333333333
--------------------------------------------------------------------

6.数字dd
100ddだとカーソルの行から下方向へ100行分削除する

333333333333の行で3ddを実行
--------------------------------------------------------------------
000000000000
111111111111
222222222222
666666666666

777777777777
--------------------------------------------------------------------

7.yy
行全体をクリップボードにコピー


8.yyp
カーソルのある行をコピーし挿入
--------------------------------------------------------------------
000000000000
111111111111
111111111111
222222222222
333333333333
--------------------------------------------------------------------

9.0
行の先頭にカーソルを移動

10.$
行の最後尾にカーソルを移動


他にも便利なコマンドがたくさんあるので興味を持った方は自分で調べて下さい。