用正则表达式取代我的Vim正在抛出一个“E488:尾随字符”

时间:2013-04-05 19:34:53

标签: regex vim

我正在尝试查找Twitter句柄的所有实例,并在它们周围包装锚标记。

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

这给了我:

E488: Trailing characters

5 个答案:

答案 0 :(得分:26)

/{pattern}之间的分隔符({string}}包含在其中之一时,必须使用\进行转义。避免这种情况的一个技巧是使用不同的分隔符,例如#

:%s#@\(\w\+\)#<a href="http://www.twitter.com/\1">\0</a>#gc
PS:如果它应该做我认为它应该做的事情,你的模式是错误的;看我的纠正。

答案 1 :(得分:9)

如果在选定的文本块中进行替换时遇到此问题,则可能是因为您只应键入%s时错误地键入了s

我发生了这种情况,方法是选择一个块,然后键入:,并在提示符:'<,'>上键入%s/something/other/,当正确的语法为{{1}时,结果为:'<,'>%s/something/other/ },没有百分比。

答案 2 :(得分:1)

我遇到了这个问题并且无法让它消失,直到我发现我所拥有的.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 :(得分:1)

:%s/\/apps/log_dir/g

其中要替换的字符串= / apps 并替换了string = log_dir 我们看到/所以我们需要使用"\/"

答案 4 :(得分:0)

我有同样的问题。

仅使用其他定界符无济于事。所以,另外

  1. 我没有选择任何行。

  2. 并且没有将g用于全局。

就这样

HttpSensor

工作完成了。将所有出现的“ to_be_replaced”更改为“ replacement”。