Vimスクリプト(:bufdo)

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 /


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

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA