5

次のような行があるとします。

'alpha' 123 
'beta' 678
'alpha' 998
'gamma' 212

VIM で検索と置換の正規表現を使用すると、次のようになります。

'alpha' 123 : alpha
'beta' 678 : beta
'alpha' 998 : alpha
'gamma' 212 : gamma

基本的に、検索は検索対象を置き換えるのではなく、別の目的で使用するだけです。私の頭では、これはうまくいくはずです:

:g/'\(.*\)'/s/$/: \1/g

しかし、それはしませんでした。探しているものを消費せず、使用するために保持するにはどうすればよいですか?

4

4 に答える 4

5

一致のイニシャルgは、置換のためにキャプチャされません。検索のグループ化にのみ使用されます。代わりにこれを使用してください。これも少し簡単です。

%s/'\(.*\)'.*/& : \1/

&は、一致したすべてのものを置き換えます。

于 2013-04-22T16:26:48.950 に答える
0

マクロはあなたの例でも機能します: (vim ではテストしませんでしたが、機能するはずです。)

1行目の先頭にカーソル:

qqyi'A : <esc>pjq

次にx@q(x は何回やりたいか)

于 2013-04-22T16:39:05.160 に答える
0

このコマンドは機能するはずです:

:%s/\v'(\w*)'.*/\0 : \1

(まあ、それはあなたのサンプルテキストでここでやった)

于 2013-04-22T16:25:59.587 に答える