Мой Vim заменяет регулярное выражение, бросая `E488: Trailing characters`
Я пытаюсь найти все экземпляры дескриптора Twitter и обернуть вокруг них привязывающий тег.
:%s/\(@[\w]\)/<a href="#" onclick="location.href='http://www.twitter.com/\1'; return false;">\1<\/a>/gc
Что дает мне:
E488: Trailing characters
Ответы
Ответ 1
Если символ разделителя (/
в вашем случае) между {pattern}
и {string}
содержится в одном из них, он должен быть экранирован с помощью \
. Трюк, чтобы избежать этого - использовать другой разделительный символ, например. #
:
:%s#@\(\w\+\)#<a href="http://www.twitter.com/\1">\0</a>#gc
PS: Если он должен делать то, что, я думаю, должен делать, ваш шаблон неправильный; см. мою коррекцию.
Ответ 2
У меня была эта проблема, и я не мог ее уйти, пока не узнал, что в файле .vimrc
у меня были части, которые я скопировал из другого источника, где были аббревиатуры, например, например:
abbrev gc !php artisan generate:controller
Эта аббревиатура испортит мой поиск и заменит команды, которые обычно выглядят следующим образом:
:%s/foo/bar/gc
расширив gc
на !php artisan generate:controller
, за исключением того, что он не будет делать это на месте/в реальном времени. Способ, которым я был связан, - это просмотреть историю команд (нажав :
и стрелку вверх) и увидеть
:%s/foo/bar/!php artisan generate:controller
Итак, если у вас заканчиваются персональные ошибки, независимо от того, что вы делаете, я бы заглянул внутрь
~/.vimrc
и посмотрите, можете ли вы найти там проблему.
Ответ 3
:%s/\/apps/log_dir/g
где строка для замены =/apps
и заменил строку = log_dir
как мы видели /, нам нужно использовать "\/"