2012-02-14 12 views

cevap

7

, ayrıca böyle abolish eklenti kullanabilirsiniz:

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

Teşekkürler! Tam olarak aradığım şey. –

1
  1. % s/deneme/bbaarr/g
  2. :% s/bar/veli/g
  3. % s/bbaarr/deneme/g

Bir akıllı mevcut olmalıdır Bunu yapmanın yolu, ama bu kesinlikle işe yarayacak!

+0

Düzeltme 3.:% s/bbaarr/bar/g – Bhaskar

0

Geçici sözcük kullanarak bunu yapabilirsiniz. Sadece mevcut belgede bulunmadığından emin olun. Kenara değişim için geçici bir kelimeyi kullanmaktan

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

bu bir göz atın: 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

Bu biraz daha karmaşık, evet, ancak eklenti yok mu? çoğu bunu tercih edebilir. –

+0

@JasonMcGhee: Yedek dizge "\ =" ile başladığında, kalan kısım bir ifade olarak yorumlanır. – kev

+0

onu seviyorum, buradaki bazı vimfu. –