Mon remplacement Vim avec une expression rationnelle lance un ' e488: caractères de fin`
J'essaie de trouver toutes les occurrences d'une poignée Twitter, et enrouler 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
3 réponses
Lorsque le caractère de séparation (/
dans votre cas) entre {pattern}
et {string}
est contenu dans l'un de ces, il faut l'échapper avec un \
. Une astuce pour éviter cela est d'utiliser un caractère de séparateur différent, par exemple #
:
:%s#@\(\w\+\)#<a href="http://www.twitter.com/\1">\0</a>#gc
PS: si elle doit faire ce que je pense qu'elle devrait faire, votre modèle est faux; voir ma correction.
J'ai eu ce problème et je ne pouvais pas le faire disparaître jusqu'à ce que je découvre que le fichier .vimrc
que j'avais des parties que j'ai copiées ailleurs où cela contenait des abréviations, comme ceci par exemple:
abbrev gc !php artisan generate:controller
Cette abréviation gâcherait Mes commandes de recherche et de remplacement qui ressemblent généralement à ceci:
:%s/foo/bar/gc
En élargissant 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 regardant à travers la commande historique (en appuyant sur :
et la flèche vers le haut) et en voyant
:%s/foo/bar/!php artisan generate:controller
Donc, si vous obtenez des erreurs de caractère de fin, peu importe ce que vous faites, je regarderais à l'intérieur
~/.vimrc
Et voyez si vous pouvez trouver le problème là-bas.
:%s/\/apps/log_dir/g
Où chaîne à remplacer= / apps
et remplacé string=log_dir
comme nous l'avons vu / nous devons donc utiliser "\/"