2

スクリプトには、次のような行がたくさんあります。

./run -f abc.txt
./run -f abc1.txt
./run -f abc2.txt
..
..
./run -f abc50.txt

abc*.txtすべてをに置き換える必要がありabc.txtます。Vimでこれを行う方法はありますか?すべてを検索してabc*.txt置き換える方法はありますか?

4

3 に答える 3

5

あなたができること:

:%s/abc\d*.txt/abc.txt/g
于 2012-07-02T04:30:10.757 に答える
2

多様性の名の下にこれを行うための別の方法を追加しますが、標準的で最も簡単な方法は@xdazzアプローチだと思います。

:%g/abc/norm!fclvf.hx

を使用する場合%g、最初の引数に一致するすべての行にコマンドを適用します(この場合、コマンドはそれらabcにあるすべての行を意味abcします)。norm!コマンドは、通常モードのようにコマンドを実行 するfcことを意味します。文字を検索するcことlを意味し、左に移動し、vビジュアルモードを開始し、f.ポイントを検索hし、右に移動し、最後にx視覚化された単語を削除します。

このアプローチの良いところは、選択した行に複雑なマクロを適用できることです。

于 2012-07-02T05:06:06.110 に答える
1

簡単に言うと、次のようなものを試してください:(わずかなマッサージが必要な場合があります)%s/abc\d*\.txt/abc\.txt/g

詳細については、このページをチェックしてください。

http://vim.wikia.com/wiki/Search_and_replace

:%s/foo/bar/g
Find each occurrence of 'foo', and replace it with 'bar'.
:%s/foo/bar/gc
Change each 'foo' to 'bar', but ask for confirmation first.
:%s/\<foo\>/bar/gc
Change only whole words exactly matching 'foo' to 'bar'; ask for confirmation.
:%s/foo/bar/gci
Change each 'foo' (case insensitive) to 'bar'; ask for confirmation.
This may be wanted after using :set noignorecase to make searches case sensitive (the default).
于 2012-07-02T04:30:55.150 に答える