2012-02-14 15 views

risposta

7

Oltre a utilizzare una parola temporanea per il cambiamento, si potrebbe anche usare abolish plugin come questo:

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

Grazie! Esattamente quello che stavo cercando. –

1
  1. :% s/foo/bbaarr/ge
  2. :% s/bar/foo/g
  3. :% s/bbaarr/foo/g

deve esistere un intelligente modo di farlo, ma questo funzionerà sicuramente!

+0

Correzione 3.:% s/bbaarr/bar/g – Bhaskar

0

È possibile farlo utilizzando la parola temporanea. Basta essere sicuri che non esiste nel documento corrente.

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

Date un'occhiata a questo: 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

Questo è un po 'più complesso, sì, ma nessun plug-in? molti potrebbero preferirlo. –

+0

@JasonMcGhee: quando la stringa sostitutiva inizia con "\ =" il resto viene interpretato come un'espressione. – kev

+0

amalo, è un po 'vimfu proprio lì –

Problemi correlati