10

このコマンドを使用してVIMで開いたファイルのリストがあります。

vim `cat list.txt`

開いているすべてのファイルに対してこのコマンドを実行しようとしています。

:99,104 norm i#

(99行目から104行目まで、コメント "#"を挿入)<-シンプル、機能

上記のコマンドを実行して挿入すると、現在のファイルで期待どおりに機能します。開いているすべてのファイルに対してVIMにまったく同じコマンドを実行させるにはどうすればよいですか?、、試してみましたが:argdo、運がありませんでした。:windo:bufdo

助言がありますか?

4

3 に答える 3

14

以前に(保存せずにバッファを変更できるようにするために)bufdo持っていれば、うまくいくと思います:set hiddenbufdo

:set hidden
:bufdo 99,104 norm i#

:bufdo! w次に、すべてのファイルをまたはで保存します:wa

(注:set hiddenに置き換えることもできますset autowrite。)

于 2013-01-02T18:36:14.340 に答える
3

sedを使えばもっといいオプションだと思います。sedは、vimのようなインタラクティブエディターではなく、コマンドラインエディターです。

sed -i '99,104s/^/#/' list of files 
于 2013-01-02T18:39:14.823 に答える
2

すべてのファイルを引数として指定したので、:argdoは正しいコマンドです。(他のファイルを開かない限り、同様に機能します。) (他の回答に示されているように):bufdo望まない場合は、を介してバッファーをすぐに永続化する必要があります。コマンドを使用しているため、別のExコマンドを連結できるようにするには、コマンドを囲む必要があります。:set hidden:update:normal:execute

:argdo 99,104 execute 'norm i#' | update
于 2013-01-03T01:07:20.000 に答える