3

すべて同じ構造のテキスト行があり、すべての行で2つの要素の順列を作成したいと思います。

1257654 some text (which may be long) #Foo
1543098 some other text #Barbar
1238769 whatever #Baz
2456874 something else #Quux

入手したい:

#Foo some text (which may be long) 1257654
#Barbar some other text 1543098
#Baz whatever 1238769
#Quux something else 2456874

これは私が立ち往生しているところです:

:%s/\(\d\{7\}\)\(#.\{-}\)/\2\1/

どこで私は間違えましたか ?

4

3 に答える 3

5

置換の問題は、グループが3つではなく2つしかないことです。

1あなたの目標は交換すること3です2

(1)(2)(3) --> (3)(2)(1)

したがって、パターンには3つのグループが必要です。

(1543098)( some other text )(#Barbar)

できること:

(#Barbar)( some other text )(1543098)

この置換は機能しているようです:

:s/^\(\d\{7\}\)\(.*\)\(#\w*\)/\3\2\1

おかげで、より短くてきれいなバージョンがここにありますverymagic

:s/\v^(\d{7})(.*)(#\w*)/\3\2\1`
于 2012-10-02T21:35:32.707 に答える
1
:%s/^\(\d\{7\}\)\(.*\) \(#.*\)/\3\2 \1/

あなたのために働くかもしれません。

于 2012-10-02T20:34:33.997 に答える
1

私はそれをします

%s/\v^(\d{7})(.{-})\s*(#.*)$/\3\2 \1/

他の回答はまだチェックしていません

欲張りでない一致({-})がここでの鍵です

于 2012-10-02T21:39:17.793 に答える