エンジニアなプログラマ

プログラミング(特にvala言語関連)の話題を取り上げていきます。

現在、新しいクラス図描画ソフトを開発中! http://gridraw.com/

Vimの一括置換時に '継続' 表示で処理を止めない方法

目的

多くの(正確な数は不明)ファイルを対象に文字列の一括置換をする。

:args **/*.vala
:argdo %s/foo/bar/g

すると途中で '継続' と表示され、処理が一時停止。 Space、Enter、PageDown等を押下し、逐次処理を進めなければならなくなる。 処理を一時停止することなく、全ファイルの一括置換を一発で済ませたい。

情報元

http://d.hatena.ne.jp/h_primula/20100726 のコメントでthincaさんが回答されている。

解決方法1: sコマンドにeフラグを付与

:args **/*.vala
:argdo %s/foo/bar/ge

なおeフラグは

検索パターンが何もマッチしなかったとき、エラーメッセージを表示しない。

という意味。http://vim-jp.org/vimdoc-ja/change.html

'継続' と表示され処理が一時停止してしまうのは、指定パターンがファイル内で見つからない時のようだ。

解決方法2: '継続'表示時にGを入力

'継続'表示時にG (Shift+g) を入力すると、一時停止した処理を最後まで継続してくれる。

参考

argdoを使用しない複数ファイル内の文字列置換方法がvimのマニュアルに載っていた。 そこではeフラグ(解決方法1)を使用していた。

http://vim-jp.org/vimdoc-ja/usr_12.html#12.1