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

Мой 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
4b9b3361

Ответ 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 как мы видели /, нам нужно использовать "\/"