vi(6)はどんなUNIXでも必ず利用できるテキストエディタです。GUIのエディタに慣れた人には取っつきづらい面もありますが、長年使われてきた歴史のあるテキストエディタで、最初は取っつきにくいかもしれないが、コマンドをうまく使えば効率的なファイル編集ができるようになります。現在の多くのUNIX系OSではviの代わりにその上位互換プログラムのvimが使われています。なお、UNIX系OSではvi以外のエディタにはEmacsがあります。
viが最近のテキストエディタと大きく異なりモードという概念がある。viのモードは文字入力の挿入モード、編集作業用のコマンドモードの二つがあり、viを利用するときは、今どのモードで作業しているのかを意識しなければならない。
どのモードであっても ESCキーを押すとコマンドモードに移行し、 i、a、o、Oキーを押すと挿入モードに移行する。
※もし、今どのモードなのかが分からなくなったら ESCキーを押してコマンドモードに移行すればよい。
図6.1[viの起動]のようにコマンド名に続けて編集したいファイル名を入力すれば、viが起動する。起動直後のモードはコマンドモードである。
$ vi 編集するファイル名 または $ vim 編集するファイル名
vimの使い方を練習するvimtutorコマンドがある。
文字を入力するには表6.1[挿入コマンド]のいずれかのコマンドをコマンドモードで入力し、挿入モードへ移行するればよい。挿入モードへ移行したあとのキー入力はファイルへの文字入力として扱われる。
コマンド | 挿入位置 | コマンド | 挿入位置 |
---|---|---|---|
i | カーソル位置 | I | 行頭 |
a | カーソルの右側 | A | 行末 |
o | カーソル行の下 | O | カーソル行の上 |
i、a、oはそれぞれinsert、append、openの頭文字です。
表6.2[修正・変更コマンド]のコマンドでファイルの修正、変更する。修正したい部分をすぐに消せるので便利である。
コマンド | 動作 |
---|---|
s | カーソルの文字を消し、挿入モードに |
S | カーソル行のすべての文字を消し、挿入モードに |
r | カーソル位置の一文字のみ変更し、挿入モードに |
R | カーソル以降の文字を変更 |
cw | カーソル上の単語を変更 |
c$ | カーソル位置から行末までを変更 |
s、r、c、wはそれぞれsearch、replace、change、wordの頭文字。$は行末を意味する。
一般的なエディタと同様にカーソルキーで動かせるがviはもともとhjklの各キーでもカーソルを動かしていた。
表6.3[カーソル移動キー]はコマンドモードでのviのカーソル移動コマンドです。
キー | 方向 | キー | 方向 | キー | 方向 | キー | 方向 |
---|---|---|---|---|---|---|---|
h | 左の文字 | 0 | 行頭へ | w | 次の単語の先頭 | gg | ファイル先頭行 |
j | 下の行 | $ | 行末へ | b | 前の単語の先頭 | G | ファイル最終行 |
k | 右の文字 | 数字G | 数字の行へ | e | 次の単語の末尾 | L | 画面の最終行へ |
l | 上の行 | :行番号 | 指定した行へ | H | 画面の先頭行へ | M | 画面の中心行へ |
Ctrlキーとの組み合わせでスクロールできる。
キー操作 | 動作 | キー操作 | 動作 | キー操作 | 動作 |
---|---|---|---|---|---|
Ctrl+b | 上に1画面 | Ctrl+f | 下に1画面 | Ctrl+u | 上に半画面 |
Ctrl+d | 下に半画面 | Ctrl+y | 上に一行 | Ctrl+e | 下に一行 |
b、f、u、dはback、forward、up、downの頭文字。
削除コマンドを表6.5[削除コマンド]に示す。コマンドモードで使い、削除したデータはバッファに保存され、貼り付けできる。
キー | 削除対象 |
---|---|
x | カーソル上の1文字 |
数字x | 数字分の文字を削除 2xで2文字削除 |
X | カーソル左側のすべての文字 |
J | 改行文字 |
dd | カーソル行の全ての文字 |
数字dd | カーソル行から数字分の行 |
dカーソル移動コマンド(w,e,^,$) | カーソルが移動した行までを削除 |
削除などの操作の結果を取り消す操作をアンドゥ、取り消しの取り消しをリドゥといい、表6.6[アンドゥ・リドゥコマンド]のコマンドを使う。
コマンド | 動作 |
---|---|
u | 操作結果の取り消し |
Ctrl+r | 取り消しの取り消し |
viは行単位で文字をコピーし、コピーした文字はバッファに保存されるため、貼り付けコマンドで再利用できる。表6.7[コピーコマンド]にコマンドを示す。
コマンド | 動作 |
---|---|
yy | カーソル行をバッファに保存 |
Y | yyと同じ |
数字yy | カーソル行から数字行分をバッファに保存 |
"文字yy | バッファ文字(a〜z)にカーソル行を保存する |
"文字Y | "文字yyと同じ |
バッファは最大26(aからz)まで利用できる。
vコマンドを使うと範囲を指定してコピーが可能。
削除やコピーでバッファに記憶されたデータはpまたはPコマンドで貼り付けられる。コピー時にバッファ名を指定した場合はpまたはPコマンドの前にバッファ名を指定して利用します。
貼り付けの手順を次の通り
pはカーソルの次の行に、Pはカーソルの前の行にバッファのデータを貼り付けます。
表6.8[ファイルの読み込み・保存・終了]にファイルの読み書き終了コマンドを示す。
コマンド | 役割 |
---|---|
ZZ | ファイルを保存し、viを終了 |
:wq | ZZと同じ |
:w | ファイルを保存するのみ。viは終了しない |
:wファイル名 | ファイルを指定した名前で保存。 |
:q! | ファイルを保存せず、viを終了 |
:oファイル名 | ファイルを開く。 |
:rファイル名 | ファイルをカーソル位置に読み込む。 |
編集中のファイルから複数の文字や文字列列を検索あるいは置換するコマンドを表6.9[検索コマンド]と表6.10[置換コマンド]に示す。編集作業の効率化に欠かせないコマンドである。コマンドモードで利用します。
コマンド | 動作 |
---|---|
f文字 | カーソル行内で右方向へ"文字"を検索。カーソルは文字の上 |
F文字 | カーソル行内で左方向へ"文字"を検索。カーソルは文字の上 |
t文字 | カーソル行内で右方向へ"文字"を検索。カーソルは文字の左 |
T文字 | カーソル行内で左方向へ"文字"を検索。カーソルは文字の左 |
/文字列 | 文字列をファイル末尾方向へ検索。カーソルは先頭文字の上 |
?文字列 | 文字列をファイル先頭方向へ検索。カーソルは先頭文字の上 |
コマンド | 動作 |
---|---|
:s/検索文字列/置換文字列/ | 行内で最初に見つかった文字列を置換 |
:s/検索文字列/置換文字列/g | 行内の文字列を置換 |
:%s/検索文字列/置換文字列/ | ファイル全体の文字列を置換 |
vimの設定情報はファイル~/.vimrcで、vim起動時にこのファイルが読み込まれ、vimを自動的に設定してくれる。次のリストはファイルの文字コードの設定例です。
set encoding=utf-8 set fileencoding=utf-8 set fileencodings=iso-2022-jp,sjis,euc-jp,utf-8 set fileformats=unix,dos,mac