Posted at

Vimをバッチモード(-e -s)で使う際のTips

More than 5 years have passed since last update.

ファイルを1行ずつ読み込みながら処理するのはawkが向いていますが、

途中の行から前に戻りながら編集したい場合など、

エディタ操作としてなら簡単に記述できる処理をスクリプトとして実行したい場合、

Vimのバッチモードは便利です。

(shell script中から、バッチモードで起動したVimを、1つのフィルタとして使う等)

最近Ex mode用スクリプトを2つ書いた際のTipsです。


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>と入力してみると終了するかも

ユーザ入力待ちになっている可能性。


shell scriptから呼んでいる場合、以降の処理を中断させたいときは:cquitしてexit codeを1にして、shell script側で判定