(親記事はコチラ Vimコマンド&Script入門)
buffer-listの操作はだいたい分かりました。
次は、各バッファに一括編集、bufdoを学習します。
まずはヘルプ確認。
:[range]bufdo[!] {cmd} Execute {cmd} in each buffer in the buffer list or if
[range] is given only for buffers for which their
buffer number is in the [range]. It works like doing
this:
:bfirst
:{cmd}
:bnext
:{cmd}
etc.
buffer-listの中の全てのバッファへの編集だけでなく、rangeを指定することで、特定のバッファのみに絞り込んで編集ができるようです。
使ってみます。
/tmp $ for i in {1..5};do echo HELLO$i>test_$i.txt;done
/tmp $ vim test_*.txt
上記のように起動した後、lsを確認。
:ls

:ballで全てのバッファをスプリット表示しておきます。
:ball

:bufdoを使って、”HELLO”を”HELL “に置換してみます。
:bufdo s/HELLO/HELL /

エラーになりました。毎度!をつけるのを忘れていますね。
!をつけて、もう一度トライ。
:bufdo! s/HELLO/HELL /

見事に全バッファ置換されました。



コメント