Come sostituire tutte le istanze di "pippo" con "barra" e "barra" con "pippo" in vim?Vim sostituire due parole tra loro
risposta
Oltre a utilizzare una parola temporanea per il cambiamento, si potrebbe anche usare abolish plugin come questo:
:%SubVert/{foo,bar}/{bar,foo}/g
Grazie! Esattamente quello che stavo cercando. –
- :% s/foo/bbaarr/ge
- :% s/bar/foo/g
- :% s/bbaarr/foo/g
deve esistere un intelligente modo di farlo, ma questo funzionerà sicuramente!
Correzione 3.:% s/bbaarr/bar/g – Bhaskar
È 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
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
Questo è un po 'più complesso, sì, ma nessun plug-in? molti potrebbero preferirlo. –
@JasonMcGhee: quando la stringa sostitutiva inizia con "\ =" il resto viene interpretato come un'espressione. – kev
amalo, è un po 'vimfu proprio lì –
Come avete trovato una risposta, si prega di contrassegnarla accettata. – johnny