複数ファイルの編集

複数ファイルをあつかう場合のコマンド

viを終了しないで複数のファイルを扱うためには、以下のコマンドを使用する。

:n
起動時に複数のファイルを引数にとっていた場合はこのコマンドで次のファイルに移ることができる。
:e filename
別のファイル(filename)を編集する。
: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に戻ることができる。
# vi tmp1
  1. 最初にtmp1が現れる。
  2. :e tmp2でtmp2に移る。
  3. :e tmp3でtmp3に移る。
  4. :rewでtmp1に戻る。
    ただし、この場合は:nは使えない。

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

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

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

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

参考


Prev
Home | Contents
abe@injapan.net