vi 2

マーク

viではマークを付けることによって、カーソルを移動したりコピーの際に利用することができる。
マークは一つのファイルに複数同時に付けておくことができるので、離れた場所を移動する時に便利である。
それだけではなく他のコマンドと組み合わせることにより、より便利なことができるようになる。

m文字
マークをする。
mの次に英文字(a-z)のどれか1文字を入力する。
' (クォート)
マークした行の先頭の文字にカーソルを移動。
例えば、'aでaのマークの付いた行へ移動。
` (バッククォート)
マークした行のマークをした文字にカーソルを移動。
たとえば、`aでaのマークの付いた文字へ移動。

文字変換( r コマンド)

このコマンドは、ある一文字だけを別の一文字に変換するために使用する。

使い方

変換したい文字の上にカーソルを移動して、 r を打ち込んだすぐ後に、変換する文字を打ち込む。
xコマンドの後、iコマンドで1文字打ち込んでからEscを打つのと同じだが、 このコマンドの方が効率的である。

文字列変換( s コマンド)

ファイルの全体、または、ある行(のある文字)からある行(のある文字)までという、広い範囲の文字列を変換したい時に使用する。
ある(範囲)の(文字列1)を(文字列2)に変換するには

:(範囲)s/(文字列1)/(文字列2)/[g]

とういう形で使用する。
最後の g が無いと各行の最初に見つかった(文字列1)だけを変換する。 g がついていると見つかった全ての(文字列1)を変換する。
(範囲)の指定方法の詳しいことは以下の 文字列変換の範囲指定 ( s コマンド ) を参照のこと。

s コマンドの例

:%s/tmp/test/
ファイル全体の tmp を test に変換する。(ただし行中の最初に見つかった tmp だけ変換)
:%s/tmp/test/g
ファイル全体の tmp を test に変換する。(全部変換)

文字列変換の範囲指定 ( s コマンド )

sコマンドは範囲指定をしていないとカーソルのある行だけ変換の範囲になる。
範囲指定の形式は以下のようになっている。

(範囲の始まり),[(範囲の終り)]

(範囲の終り)は省略できる。 その場合は(範囲の始まり)で指定した行だけが範囲になる。( % を除く)
(範囲の始まり)、(範囲の終り)には以下のものが使用できる。

行数
変換したい行の行番号
マーク
'a , 'b , `a , `b など
特種記号
. (ピリオド)
カーソルのある行を示す。
$ (ドルマーク)
ファイルの最後の行を示す。
% (パーセント)
ファイル全体を表す。

範囲指定の主な方法は以下の通り。

コピーと移動

vi である文字をコピーするには、y コマンドと p コマンドの組合せで行なう。
y コマンドはヤンクコマンドと言って、ファイル上の文字をバッファの中にコピーするコマンドである。
また、移動させる時はddなどの文字を削除するコマンドによって削除された文字をpコマンドによって移動する。

y コマンドの例

yy
カーソルのある行を一行分ヤンクする。
10yy
カーソルのある行から10行分ヤンクする。
yw
カーソルの文字から1単語分ヤンクする。
yfa
カーソルの文字から文字 a のところまでをヤンクする。
yl
カーソル上の1文字をヤンクする。

p コマンドは y コマンドとは逆にバッファに入っている文字をファイルのカーソルのある所へコピーするコマンドである。

p コマンドの例

p
カーソルのあるところにバッファの内容をコピーする (行単位だとカーソルの下の行、その他の場合はカーソルの右側)
3p
カーソルのあるところにバッファの内容を3回コピーする

コピーの方法

  1. カーソルをコピーされるところへ移動する。
  2. y コマンドでヤンクする。
  3. カーソルをコピーしたいところへ移動する。
    行単位のコピーの場合は、コピーされる行の1行上、 その他の場合はコピーされる場所の左の文字の上。
  4. p コマンドでコピーする。

移動の方法

  1. カーソルを移動したい文字列のところへ移動する。
  2. 文字列削除コマンド(ddなど)で移動させたい文字を消去する。
  3. カーソルを移動したいところへ移動する。
    行単位のコピーの場合は、コピーされる行の1行上、 その他の場合はコピーされる場所の左の文字の上。
  4. p コマンドで消去された文字列が現れる。

バッファとは

バッファとは、vi の中にある一時的なデータの格納場所である。
バッファにコピーされた文字は、新しい文字がコピーされてくるまでは残っている。 しかし vi を終了すればすべて消えてしまう。
詳しいことは vi 3 のバッファを参照のこと。

サンプルデータ

参考


Prev | Next
Home | Contents
abe@injapan.net