トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

vi

vi

どんなUNIXでも必ず利用できるテキストエディタで、visual editorの略です。現在、LinuxやMac OS Xにはviを改良したvim(Vi improved)がインストールされ、viがvimへのシンボリックリンクになっている場合があります。

viはGUIのエディタに慣れた人には取っつきづらいエディタかもしれません。最近のテキストエディタと大きく異なるのはモードという概念があることです。最近のテキストエディタでは文字を入力する、削除する、カーソルを移動するなどの操作は区別なくいつでもできますが、viでは文字入力とそれ以外の操作を別の状態として扱います。この状態のことをモードといい、それぞれを挿入モードコマンドモードといいます。

  • viを利用するときは、今どのモードで使用しているかを意識してください。
  • ESCキーを押すとコマンドモードに移行し、i、a、o、Oキーを押すと挿入モードに移行します。

※今、どのモードなのかが分からなくなったらESCキーを押してコマンドモードに移行しましょう。

 viの起動

コマンドviと編集するファイル名を順に並べて入力し、起動します。

vi ファイル名

例えば、ファイルtest.txtを編集するときは次のように入力する。

vi test.txt

 挿入モード

編集画面上で文字を入力するには挿入モードに変更します。表に挿入モードに移行するコマンドを示す。

コマンド 役割 コマンド 役割
i カーソル位置からの挿入開始 I 行頭からの挿入開始
a カーソル位置の右側からの挿入開始 A 行末からの挿入開始
o カーソル行の下に空白行挿入 O カーソル行の上に空白行挿入
  • i : insert
  • a : append
  • o : open

 修正と変更

削除、挿入コマンドを使うより、修正変更コマンドを使う方が効率的に作業できる。

コマンド 動作
s カーソルの文字を消し、挿入モードに
S カーソル行のすべての文字を消し、挿入モードに
r カーソル位置の一文字のみ変更し、挿入モードに
R カーソル以降の文字を変更
cw カーソル上の単語を変更
c$ カーソル位置から行末までを変更
  • s : substitute
  • r : replace
  • c : change

 カーソル移動

一般的なエディタと同様にカーソルキーで動かすこともできますがviはhjklの各キーでもカーソルを動かせます。

表にカーソル移動コマンドを示します。コマンドモードで使います。

キー 方向 キー 方向 キー 方向 キー 方向
h 左へ1文字 j 下へ1行 k 右へ1文字 l 上へ1行
w 次の単語の先頭 b 前の単語の先頭 e 次の単語の末尾
0 行頭へ $ 行末へ gg 最初の行へ G 最終行へ
数字G 数字の行へ :数字 数字の行へ
H 画面の先頭行へ L 画面の最終行へ M 画面の中心行へ

 スクロール

スクロールはCtrlキーとの組み合わせでスクロールできます。

キー操作 動作 キー操作 動作
Ctrl+b 上に1画面分 Ctrl+f 下に1画面分
Ctrl+u 上に半画面分 Ctrl+d 下に半画面分
Ctrl+y 上に一行 Ctrl+e 下に一行

 削除

削除コマンドを表に示す。削除コマンドコマンドモードで使う。

キー 動作
x カーソル上の文字を削除
数字x 数字分の文字を削除 2xで2文字文削除
X カーソルの左側の文字を削除
J 改行を削除
dw 単語を削除
d^ カーソル位置から行頭までを削除
d$ カーソル位置から行末までを削除
dd カーソル行を削除
dカーソル移動コマンド カーソルが移動した行までを削除
数字dd カーソル行から数字分の行を削除 6ddで6行文削除

削除についてのポイント

  • 削除された内容はバッファに記憶されています。
  • 間違って削除した場合はuコマンドで取り消します

 アンドゥ(操作のやり直し)

誤って削除した文字を元に戻したい場合など、操作の取り消しをアンドゥという。以下のコマンドがある。

キー 動作
u 最後に実行したコマンドの取り消し
U 行を元の状態に戻す
Ctrl+R 取り消しの取り消し
  • u : undo
  • R : redo

 行の結合

Jコマンドでカーソル行と次の行を結合します。ただし、結合した行の間には空白文字が挿入される。

 コピー

viでは行単位でコピーする内容を扱います。コピーされた内容はバッファに保存され、貼り付けコマンドで利用できます、以下の表にコマンドを示します。

コマンド 動作
yy カーソル行をバッファに保存
Y yyと同じ
数字yy カーソル行から数字行分をバッファに保存
"文字yy バッファ文字(a〜z)にカーソル行を保存する
"文字Y 文字yyと同じ

バッファは最大26まで利用できます。

例えば、数字の入力されている行をコピーするには

  1. カーソルをコピーしたい行に移動します。
  2. yyまたはYコマンドを入力します

vコマンドを使うと範囲を指定してコピーが可能です。

  1. vキーを押し、ビジュアルモードにする
  2. カーソルを移動し、範囲を指定する
  3. yyとキーを押し、指定範囲をコピーする
  • y : yank

 貼り付け

削除やコピーによってバッファに記憶されたデータはpまたはPコマンドで貼り付けられます。

コマンド 動作
p カーソルのある行と次の行と間にペースト
P カーソルのある行と前の行と間にペースト

コピー時にバッファ名を指定した場合はpまたはPコマンドの前にバッファ名を指定して利用します。

貼り付けの手順を次の通り

  • 貼り付けたい行にカーソル移動する
  • pまたはPコマンドを入力します

 検索

行あるいはファイル全体に対して文字列を検索できます。

コマンド 動作
f文字 カーソル行内で右方向へ文字を検索。カーソルは文字の上
F文字 カーソル行内で左方向へ文字を検索。カーソルは文字の上
t文字 カーソル行内で右方向へ文字を検索。カーソルは文字の左
T文字 カーソル行内で左方向へ文字を検索。カーソルは文字の左
/文字列 文字列をファイル末尾方向へ検索。カーソルは先頭文字の上
?文字列 文字列をファイル先頭方向へ検索。カーソルは先頭文字の上

 置換

行、あるいはファイル全体に対して文字列の検索置換ができます。検索文字列には正規表現が使えます。

コマンド 動作
:s/検索文字列/置換文字列/ 行内で最初に見つかった文字列を置換
:s/検索文字列/置換文字列/g 行内の置換
:%s/検索文字列/置換文字列/g ファイル全体の置換
  • s : substitute

 保存・終了

コマンド 役割
ZZ ファイルを保存し、viを終了
:wq ファイルを保存し、viを終了
:w ファイルを保存するのみ。viは終了しない
:w ファイル 指定したファイル名で保存
:q! ファイルを保存せず、viを終了
  • w : write
  • q : quit

[コマンド]