2013-01-02 9 views
8

私は、このコマンドを使用してVIMで開いたファイルのリストを持っている:開いているすべてのファイルにVIMコマンドを使用して

vim `cat list.txt` 

私は開いているすべてのファイルに対して、このコマンドを実行しているよ:

:99,104 norm i# 

(ライン99から104まで、コメント「#」を挿入)< --simple、私は現在のファイルに期待どおりに動作を挿入するには、上記のコマンドを実行すると

に動作します。すべての開いているファイルに対して同じコマンドを実行するにはどうすればよいですか?私は:argdo:windo:bufdoを試しましたが、運がありませんでした。

提案がありますか?

答えて

11

あなたはset hiddenを持っている場合、私は前に(bufdoは保存せずにバッファを変更できるように)、bufdoが働くだろうと思います::bufdo! wまたは:waを持つすべてのファイルを保存し

:set hidden 
:bufdo 99,104 norm i# 

(注:set hiddenも同様set autowriteに置き換えることができる)

+0

おかげで、私は逃しました。乾杯。 –

3

私はあなたがそれを使用することができる場合のsedは良いオプションだと思います。 sedは、vimのようなインタラクティブなエディタではなく、コマンドラインエディタです。

sed -i '99,104s/^/#/' list of files 
+1

'sed'は_stream_エディタです。スクリプトやコマンドラインから駆動できる(本物の)_text_エディタが必要な場合は、 'ed'と' ex'があります。 –

1

引数としてすべてのファイルを指定したので、:argdoが正しいコマンドです。 (他のファイルを開いていない限り、:set hidden(他の答えに示されているように)の場合は、すぐにバッファーを:updateで保持する必要があります。あなたが:normalコマンドを使用しているので、あなたは別のExコマンド連結することができるように:executeで囲む必要があります:「:セットには隠された」

:argdo 99,104 execute 'norm i#' | update 
関連する問題