web-dev-qa-db-fra.com

Mon remplacement Vim par une expression régulière lance un `E488: Trailing characters`

J'essaie de trouver toutes les instances d'une poignée Twitter et d'envelopper une balise d'ancrage autour d'eux.

:%s/\(@[\w]\)/<a href="http://www.Twitter.com/\1">\1<\/a>/gc

Ce qui me donne:

E488: Trailing characters
23
Brian Dant

Lorsque le caractère séparateur (/ dans votre cas) entre {pattern} et {string} est contenu dans l'un d'eux, il doit être échappé avec un \. Une astuce pour éviter cela consiste à utiliser un caractère de séparation différent, par exemple #:

:%s#@\(\w\+\)#<a href="http://www.Twitter.com/\1">\0</a>#gc

PS: S'il doit faire ce que je pense qu'il devrait faire, votre schéma est erroné; voir ma correction.

27
Ingo Karkat

J'ai eu ce problème et je n'ai pas pu le faire disparaître jusqu'à ce que je découvre que le .vimrc fichier dont j'avais des parties que j'avais copiées ailleurs où elles contenaient des abréviations, comme ceci par exemple:

abbrev gc !php artisan generate:controller

Cette abréviation perturberait ma recherche et remplacerait les commandes qui ressemblent généralement à ceci:

:%s/foo/bar/gc

en développant ce gc en !php artisan generate:controller, sauf qu'il ne le ferait pas sur place/en temps réel. La façon dont j'ai compris était en parcourant l'historique des commandes (en appuyant sur : et la flèche vers le haut) et voir

:%s/foo/bar/!php artisan generate:controller

Donc, si vous obtenez des erreurs de caractère, peu importe ce que vous faites, je regarderais à l'intérieur

~/.vimrc

et voyez si vous pouvez y trouver le problème.

1
racl101

:%s/\/apps/log_dir/g

où chaîne pour remplacer =/apps et remplacé chaîne = log_dir comme nous l'avons vu/nous devons donc utiliser "\/"

1
Prem S