Подтвердить что ты не робот

Поиск и замена в VIM приводит к завершающим символам

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

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

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

Трейлинг символов

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

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

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

Что я здесь делаю неправильно?

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

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