viはUNIXの標準的なエディタです。MS-DOSやWindowsに慣れた人からすると、その独特の操作体系が異様に感じられるかもしれません。しかし、使い慣れれば、その良さがきっと理解できると思います。がんばって使ってみてください。
viはおよそすべてのUNIX環境で備えられていますから、このエディタの使い方さえ覚えておけば、どこでコンソールに向かってもファイルの編集が可能です。
-
viの編集モード
viには二つのモードがあります。(正式になんというのかは知りませんが...)
一つはエディットモードです。文字を入力します。
もう一つはコマンドモードです。ファイルの読み書きや、カーソルの移動、文字の削除などを行います。
この二つのモードを切り替えながら編集を行います。
コマンドモードからエディットモードに移るには、i,a,A,o,Rなど、文字入力に用いるキーを使います。
エディットモードからコマンドモードに移るには、ESCキーを入力します。
(viを使い慣れると、行の編集が終わるたびに、ESCを押そうとするようになります)
-
viの起動
hogehogeというファイルを編集したい場合、コマンドラインから、
#vi hogehoge
と入力します。
エディットモードの場合、ESCキーを押してコマンドモードに入り、:qと入力します。バリエーションとしては下記があります。
-
:q viの終了
-
:wq ファイルを書込んでviを終了
-
:q! 編集結果をファイルに書込まずに終了
-
:wq! リードオンリーのファイルに強制的に書き込んで終了
h,j,k,lキーを使用します。(カーソルキーが使える場合もあります)
-
h カーソルを左へ
-
j カーソルを下へ
-
k カーソルを上へ
-
l カーソルを右へ
コマンドモードでiを入力すると、エディットモードに切り替わり、文字が挿入できます。バリエーションとしては下記があります。
-
i エディットモードに移行。カーソル位置の前に文字を挿入
-
a エディットモードに移行。カーソル位置の後に文字を追加
-
A エディットモードに移行。行の終わりに文字を追加
-
O エディットモードに移行。現在の行の前に文字を挿入
-
R エディットモードに移行。カーソル位置の文字を上書き
コマンドモードでxを入力すると、カーソル位置の文字を消去します。バリエーションとしては下記があります。
-
x カーソル位置の文字を削除
-
dd 1行削除
-
xdd x行削除(例:3ddと入力すると3行削除)
-
J 次の行を、現在カーソルのある行の末尾に追加(行末文字の削除)
コマンドモードで"addと入力すると、行の削除を行うとともに、消去した内容をバッファに貯えます。バッファに貯えられた内容を吐き出すには、"apを入力します。コマンドの中の「a」はバッファのポインタを示しており、"bddと入力すると、bバッファに文字列が記憶されます。bバッファの内容を吐き出すには、もちろん、"bpと入力します。バッファとしてはa〜zまでが使用できます(と思っていたのですが、大文字や、数字も使えるみたいです....)。なお、ペーストは現在カーソルのある行の後に行われますから注意してください。バリエーションとしては下記があります。
-
"add カーソル行をカットし、aバッファに内容を記憶
-
"axdd 複数行をカット(例:"a3ddと入力すると3行カット)し、aバッファに内容を記憶
-
"ayy カーソル行の内容をaバッファにコピー
-
"a3yy 複数行の内容をaバッファにコピー(例:"a3yyと入力すると3行コピー)
-
"ap aバッファの内容をペースト
/を入力した後、検索したい文字列を入力し、ENTERキーを押すと、文末に向かって検索が行われ、最初に見つかった文字列にカーソルが移動します。バリエーションとしては下記があります。
-
/hogehoge hogehogeという文字列をファイルの末尾に向かって検索
-
?hogehoge hogehogeという文字列をファイルの先頭に向かって検索
-
n 次の候補を検索
uを入力すると、直前の操作を取りやめる(無かったことにする)事ができます。バリエーションとしては下記があります。
-
u 直前の操作を取りやめる
-
U 行全体の操作を取りやめる
-
その他
-
. (ピリオド)を入力すると、直前に行ったコマンドモードの操作を繰り返すことができます
-
:set number 行を表示することができます
-
:x,yd 行を指定して削除を行います(例:1,100dと入力すると、1〜100行を削除します)