vi の使い方
他の項目は現在、製作中。
文字列変換の方法
vi である文字列を、別の文字列に変換(書き換える)したい時の方法は
などがある。
コマンドモードで、文字列を書き換える時には
- (行数)cc
- 行数分書き換え
- c(範囲)
- 範囲の部分を書き換え
という方法がある。
このコマンドを使用すると、テキストモードになるので、書き換えたら最後は Esc キーでテキストモードを終了すること。
c コマンドの例
- 5cc
- カーソルのある行から5行分書き換える
- cw
- カーソルのある文字から一単語分(スペース、タブ、Enter、英数字以外の文字があるまで)書き換える
- cfa
- カーソルのある文字から文字 a があるところまで書き換える
- cG
- カーソルのある行からファイルの最後の行まで書き換える
ex モードの 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 に変換する。(全部変換)
範囲指定をしていないとカーソルのある行だけ変換の範囲になる。
範囲指定の形式は
(範囲の始まり),[(範囲の終り)]
のようになっている。
(範囲の終り)は省略できる。
その場合は(範囲の始まり)で指定した行だけが範囲になる。( % を除く)
(範囲の始まり)、(範囲の終り)には
- ・ 行数
- 変換したい行の行番号
- ・ マーク
- '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/
参考
参考
- 「たのしいUNIX」p.289 p.301 〜 p.305
Home | Contents
abe@injapan.net