2012-02-14 167 views

回答

7

除了使用臨時字的變化,你也可以使用abolish插件這樣的:

:%SubVert/{foo,bar}/{bar,foo}/g 
+0

謝謝!正是我在找什麼。 – 2012-02-14 09:51:06

1
  1. :%S /富/ bbaarr /克
  2. :%S /酒吧/富/克
  3. :%S/bbaarr /富/克

它必須存在一個聰明的這樣做的方式,但這一個肯定會工作!

+0

更正 3.:%s/bbaarr/bar/g – Bhaskar 2012-02-14 07:57:29

0

您可以使用臨時字來做到這一點。只要確保它在當前文檔中不存在即可。

/\<asd123\> 
:%s/\<foo\>/asd123/g 
:%s/\<asd123\>/bar/g 
:%s/\<bar\>/foo/g 
10

看看這個:how to write only one pattern to exchange two strings in two-ways in vim

:s/foo\|bar/\={'foo':'bar','bar':'foo'}[submatch(0)]/g 
+1

這有點複雜,是的,但沒有插件?很多人可能會喜歡這個 – 2012-02-15 07:27:37

+0

@JasonMcGhee:當替換字符串以「\ =」開頭時,餘數被解釋爲一個表達式。 – kev 2012-02-15 08:51:15

+0

喜歡它,那是一些vimfu在那裏 – 2012-02-16 03:39:22