2012-02-14 4 views

ответ

7

Помимо использования временного слова для изменения, вы можете также использовать abolish плагин так:

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

Спасибо! Именно то, что я искал. –

1
  1. :% S/Foo/bbaarr/г
  2. :% S/бар/Foo/г
  3. :% s/bbaarr/Foo/г

Он должен существовать умный способ сделать это, но этот будет работать наверняка!

+0

Коррекция 3.:% s/bbaarr/bar/g – Bhaskar

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

Это немного сложнее, да, но нет плагина? многие могут это предпочесть. –

+0

@JasonMcGhee: Когда строка-заменитель начинается с "\ =", остаток интерпретируется как выражение. – kev

+0

люблю это, вот некоторые vimfu прямо там –

Смежные вопросы