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コマンドは範囲指定をしていないとカーソルのある行だけ変換の範囲になる。
範囲指定の形式は以下のようになっている。
(範囲の始まり),[(範囲の終り)]
(範囲の終り)は省略できる。
その場合は(範囲の始まり)で指定した行だけが範囲になる。( % を除く)
(範囲の始まり)、(範囲の終り)には以下のものが使用できる。
- 行数
- 変換したい行の行番号
- マーク
- 'a , 'b , `a , `b など
- 特種記号
-
- . (ピリオド)
- カーソルのある行を示す。
- $ (ドルマーク)
- ファイルの最後の行を示す。
- % (パーセント)
- ファイル全体を表す。
範囲指定の主な方法は以下の通り。
- 行を一行指定する。
変換する行を何行目かで指定する。
例えば 15 とすれば15行目だけが変換の範囲になる。
(例) :15s/test/tmp/
- ある行からある行までを指定する。
例えば 20,30 とすれば20行目から30行目までが範囲になる。
また $ はファイルの最後の行という意味に使用できる。
( 30,$ で30行目から最後の行までを範囲にする)
(例) :20,30s/test/tmp/
- あるマークから、あるマークのところまでを指定する。
マーク a からマーク b までを範囲に指定するには 'a,'b とする。
(例) :'a,'bs/test/tmp/
- カーソルのある行から、あるマークのところまでを指定する。
マーク a までを範囲に指定するには .,'a とする。
(例) :.,'as/test/tmp/
- ファイル全体を範囲にする。
% を使う。
(例) :%s/test/tmp/
コピーと移動
vi である文字をコピーするには、y コマンドと p コマンドの組合せで行なう。
y コマンドはヤンクコマンドと言って、ファイル上の文字をバッファの中にコピーするコマンドである。
また、移動させる時はddなどの文字を削除するコマンドによって削除された文字をpコマンドによって移動する。
y コマンドの例
- yy
- カーソルのある行を一行分ヤンクする。
- 10yy
- カーソルのある行から10行分ヤンクする。
- yw
- カーソルの文字から1単語分ヤンクする。
- yfa
- カーソルの文字から文字 a のところまでをヤンクする。
- yl
- カーソル上の1文字をヤンクする。
p コマンドは y コマンドとは逆にバッファに入っている文字をファイルのカーソルのある所へコピーするコマンドである。
p コマンドの例
- p
- カーソルのあるところにバッファの内容をコピーする
(行単位だとカーソルの下の行、その他の場合はカーソルの右側)
- 3p
- カーソルのあるところにバッファの内容を3回コピーする
コピーの方法
- カーソルをコピーされるところへ移動する。
- y コマンドでヤンクする。
- カーソルをコピーしたいところへ移動する。
行単位のコピーの場合は、コピーされる行の1行上、
その他の場合はコピーされる場所の左の文字の上。
- p コマンドでコピーする。
移動の方法
- カーソルを移動したい文字列のところへ移動する。
- 文字列削除コマンド(ddなど)で移動させたい文字を消去する。
- カーソルを移動したいところへ移動する。
行単位のコピーの場合は、コピーされる行の1行上、
その他の場合はコピーされる場所の左の文字の上。
- p コマンドで消去された文字列が現れる。
バッファとは
バッファとは、vi の中にある一時的なデータの格納場所である。
バッファにコピーされた文字は、新しい文字がコピーされてくるまでは残っている。
しかし vi を終了すればすべて消えてしまう。
詳しいことは vi 3 のバッファを参照のこと。
サンプルデータ
参考
- vi (リファレンス)
- 「たのしいUNIX」p.309 〜 p.311
- 「たのしいUNIX」p.312 〜 p.319
Prev | Next
Home | Contents
abe@injapan.net