Как найти и заменить много выражений одним в Vim? - PullRequest
0 голосов
/ 17 ноября 2011

Я копирую пример из PDF-файла в Vim, и мне нужно заменить все и на " и все и с ', чтобы код работал.

Ну, это, вероятно, будет легче понять: Я хочу заменить все foo и bar на foobar одновременно.

Ответы [ 3 ]

5 голосов
/ 17 ноября 2011

Попробуйте это в vi:

:1,$s/[“”]/"/g

затем

:1,$s/[‘’]/'/g
3 голосов
/ 17 ноября 2011

Используйте tr в качестве фильтра:

Способ Unix:

:%!tr “”‘’ \"\"\'\'
1 голос
/ 17 ноября 2011

Если вы хотите заменить все "foo" и все "bar" на "foobar", вы можете использовать это:

%s/\v<(foo|bar)>/foobar/g

Это заменит "foo" и "bar", но оставит все "foobar" в покое.

  • %s/ - заменить по всему файлу
  • \v - использовать очень магический синтаксис регулярных выражений (подробнее см. :help magic)
  • < - соответствует левой границе слова
  • (foo|bar) - фу или бар
  • > - соответствует границе правильного слова
  • /foobar/ - строка замены
  • g - глобально (произойдет для каждого случая, а не только для первого в строке)

Обратите внимание, что если вы просто имеете дело с пунктуацией, вам, вероятно, захочется удалить части границы этого регулярного выражения, иначе это не будет работать.

...