Поиск и замена в результатах VIM в конце символов - PullRequest
27 голосов
/ 16 июля 2011

Вот что я пытаюсь сделать:

%s/Article/<h2>Article</h2>/gi

К сожалению, каждый раз, когда я выполняю эту команду через мой редактор vim, он говорит:

Конечные символы

Чтобы смягчить вышесказанное, я выполнил следующее:

%s/\s*\r*$//

И он успешно выполняется, но когда я возвращаюсь к исходной команде поиска и замены, он снова читает 'Конечные символы'и не выполняет операцию поиска и замены.

Что я здесь не так делаю?

Ответы [ 2 ]

36 голосов
/ 16 июля 2011

«Конечные символы» находятся в вашей команде, а не в документе.

Vim считает, что вы завершили команду на Article</, а затем считает h2>/gi третьим аргументом команды замены.Но эти символы не все действительны для третьего аргумента, поэтому он выдает ошибку.

Чтобы решить эту проблему, вам нужно экранировать символ / в вашей замене.

%s/Article/<h2>Article<\/h2>/gi
27 голосов
/ 22 июля 2011

Кроме того, если вам часто нужно использовать буквенные косые черты в регулярных выражениях (пути к файлам XML / HTML / UNIX) и не хотите беспокоиться о экранировании каждого экземпляра, вы можете использовать другой разделитель. Например, используя! вместо /:

%s!Article!<h2>Article</h2>!gi

Я ленивый, и обычно это проще, чем убирать косую черту вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...