Vimでテキストファイルを一括編集 実習編 −2

最後に
複数のファイルに対して処理をします。

まず現在のいるディレクトリを確認しましょう。
:pwd
変えたければ:cdです。
気をつけたいのはVimから出ないことです。
:qでVimを抜けて、シェルに戻ってしまうとマクロは消えてしまいます。

作業したいディレクトリに移動したらargsコマンドとワイルドカードを使って処理したいファイルを選びます。
:args *
今回はカレントディレクトリ下のすべてのファイルを選びました。

:args
と引数無しで実行すると開いているファイルのリストが得られます。
現在表示されているファイルは[]で囲まれています。
ファイル間の移動は
:first , :last , :prev , :next
といったコマンドで行います

開いている複数のファイルに対してマクロを使う場合は
:argdo normal @[レジスタ]
です。

一括処理をする前に:firstで先頭のファイルに移動しておきましょう。
1つのファイル全体に適用するマクロはzに保存しましたので
:argdo normal @z
で開いている全部のファイルに適用できそうです。
ですが、エラーが出ました。
最後の変更が保存されていません。とのこと。
いけません、忘れていました。
:argdo などのコマンドを使うときは
:set hidden  (:nextなどのコマンドに!をつけたことにするオプション)
の設定をして、ファイルを保存していなくても次のファイルに移れるようにする必要があります。

さてこれですべてOK。


ずいぶん長くなってしまったので今までやったことを簡潔にまとめます。
複数のファイルに対して一括で処理を行うには
1.1行向けのマクロを保存する(qx[操作]q)
2.ファイルの先頭から末尾まで適用するマクロを保存する(qz:%normal @xq)
3.複数のファイルを開きマクロを適用する (:set hiddenしてから :argdo normal @z)
注.レジスタxやzはアルファベット1文字で自由に指定できる。
注.マクロはVimを終了すると消えてしまう。