vi 3

複数ファイルの編集

viを終了しないで複数のファイルを編集するには以下のコマンドを使用する。
これらのコマンドを知っておくと文字列のコピー・移動などを便利に行うことができる。

:n
起動時に複数のファイルを引数にとっていた場合はこのコマンドで次のファイルに移ることができる。
:e file
fileを編集する。
:e#
直前のファイルを編集する。
:rew
起動時の最初のファイルを編集する。

ただし、現在編集しているファイルを1文字でも変更している場合には :wによってファイルを書き込んでおいてから、これらのコマンドを使わないと次のファイルを編集対象にはできない。

# vi tmp1 tmp2 tmp3
  1. 最初にtmp1が現れる。
  2. :nによってtmp2に移る。
  3. 次にもう一度:nによってtmp2からtmp3に移る。
  4. :e#によってtmp3からtmp2に戻る。
  5. 同じく:e#によってtmp2からtmp3に戻る。
    :e#を繰り返し使うとtmp2とtmp3を行ったりきたりになる。
  6. :rewで最初のtmp1に戻ることができる。
  7. その後:nによって再度tmp2に移る。

[image of '# vi tmp1 tmp2 tmp3']

バッファ

viにはバッファと呼ばれるデータの一時的な格納場所がある。
このバッファを使うことによって同じファイル・他のファイルへのコピーなどを行うことができる。

バッファには以下の3種類がある。

複数のファイルにまたがったコピー

バッファと複数のファイル の扱い方の2つの知識を組み合わせると2つ以上のファイルにまたがったコピーができるようになる。
1つのファイルの中でコピーをするにはyコマンドとpコマンドの組合せでできたが、他のファイルにコピーをするにはそれだけではできない。 なぜなら、yコマンドをそれだけで使うとヤンクされたデータは名前無しバッファにコピーされるが、名前無しバッファは他のファイルに編集ファイルを変更したとたんにクリアされて中身が消えてしまう。 だからpコマンドを使っても何もコピーされない。
ゆえに他のファイルにデータをコピーするためには、編集ファイルを変更しても中身の消えない名前付きバッファを使う。

ファイルtmp1からtmp2に、ある1行をコピーする方法。

# vi tmp1
  1. 最初にtmp1が現れる。
  2. コピーされる行で"ayyと打ち込む。
    これでaバッファにその行がコピー(ヤンク)される。
  3. :e tmp2でtmp2に移る。
  4. コピーしたい行で"apと打ち込む。
    これでaバッファの内容がカーソルの下にコピーされる。

最初にvi tmp1 tmp2 と実行して3.を:nにしても良い。
また、複数行をコピーするときは2.で"a(行数)yyとする。
例えば、3行コピーなら"a3yyと実行する。

サンプルデータ

参考


Prev | Next
Home | Contents
abe@injapan.net