ファイルを1行ずつ読み込みながら処理するのはawkが向いていますが、
途中の行から前に戻りながら編集したい場合など、
エディタ操作としてなら簡単に記述できる処理をスクリプトとして実行したい場合、
Vimのバッチモードは便利です。
(shell script中から、バッチモードで起動したVimを、1つのフィルタとして使う等)
- Ex modeでスクリプト実行:
-e -s <scriptfile
- Normal modeでスクリプト実行:
-s scriptfile
(-e
無し)
最近Ex mode用スクリプトを2つ書いた際のTipsです。
- http://qiita.com/deton/items/60d796c3ba5cbb8c4bbb#4-5
- http://qiita.com/deton/items/2fc42176b177d33d6d1e#3-1
GNU edのコメントは#
だがvimは"
Ex modeでのスクリプト実行では、ed用スクリプトもある程度動作。
--noplugin
plugin内(fakeclip.vim等)でエラーが発生するとexit codeが1になるのを回避するため。
-X
Xサーバへの接続にPCによっては70ms程度かかる場合があるので。
前の行へは-
、次の行へは+
-4
等も使用可。
:-
は、:.-1
の省略とみなされる模様。
Vimのヘルプには明示的な記述は無いが、:rangeあたり。
Ex mode用スクリプトファイル内に空行があるとE501: At end-of-file
エラーが発生するとvimのexit codeが1になる
スクリプトのデバッグは-V
を付けてvimを実行
画面に何も表示されずに、Vimが動き続けて終了しない場合は、qa!<Enter>
と入力してみると終了するかも
ユーザ入力待ちになっている可能性。