vi 3
複数ファイルの編集
viを終了しないで複数のファイルを編集するには以下のコマンドを使用する。
これらのコマンドを知っておくと文字列のコピー・移動などを便利に行うことができる。
- :n
- 起動時に複数のファイルを引数にとっていた場合はこのコマンドで次のファイルに移ることができる。
- :e file
- fileを編集する。
- :e#
- 直前のファイルを編集する。
- :rew
- 起動時の最初のファイルを編集する。
ただし、現在編集しているファイルを1文字でも変更している場合には :wによってファイルを書き込んでおいてから、これらのコマンドを使わないと次のファイルを編集対象にはできない。
例
# vi tmp1 tmp2 tmp3
- 最初にtmp1が現れる。
- :nによってtmp2に移る。
- 次にもう一度:nによってtmp2からtmp3に移る。
- :e#によってtmp3からtmp2に戻る。
- 同じく:e#によってtmp2からtmp3に戻る。
:e#を繰り返し使うとtmp2とtmp3を行ったりきたりになる。
- :rewで最初のtmp1に戻ることができる。
- その後:nによって再度tmp2に移る。
バッファ
viにはバッファと呼ばれるデータの一時的な格納場所がある。
このバッファを使うことによって同じファイル・他のファイルへのコピーなどを行うことができる。
バッファには以下の3種類がある。
- 名前無しバッファ
名前を付けないでyコマンドやdコマンドを使うと名前無しバッファにコピーされる。
コピーされたデータはpコマンドで取り出せる。
- 番号付きバッファ
ddなどで削除された行が順番にコピーされる。
コピーされたデータは"(番号)pコマンドで取り出せる。
- 名前有りバッファ
aからzまでの英文字と特殊記号の1文字の名前が付いたバッファがある。
同時に2箇所以上をコピーしたり、異なるファイルにコピーするときなどに使用される。
"(英文字)で名前を指定してy,dコマンドを使うと、その英文字のバッファに
データがコピーされる。
コピーされたデータは"(英文字)pコマンドで取り出せる。
複数のファイルにまたがったコピー
バッファと複数のファイル の扱い方の2つの知識を組み合わせると2つ以上のファイルにまたがったコピーができるようになる。
1つのファイルの中でコピーをするにはyコマンドとpコマンドの組合せでできたが、他のファイルにコピーをするにはそれだけではできない。
なぜなら、yコマンドをそれだけで使うとヤンクされたデータは名前無しバッファにコピーされるが、名前無しバッファは他のファイルに編集ファイルを変更したとたんにクリアされて中身が消えてしまう。
だからpコマンドを使っても何もコピーされない。
ゆえに他のファイルにデータをコピーするためには、編集ファイルを変更しても中身の消えない名前付きバッファを使う。
例
ファイルtmp1からtmp2に、ある1行をコピーする方法。
# vi tmp1
- 最初にtmp1が現れる。
- コピーされる行で"ayyと打ち込む。
これでaバッファにその行がコピー(ヤンク)される。
- :e tmp2でtmp2に移る。
- コピーしたい行で"apと打ち込む。
これでaバッファの内容がカーソルの下にコピーされる。
最初にvi tmp1 tmp2 と実行して3.を:nにしても良い。
また、複数行をコピーするときは2.で"a(行数)yyとする。
例えば、3行コピーなら"a3yyと実行する。
サンプルデータ
参考
Prev | Next
Home | Contents
abe@injapan.net