37

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

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

这给了我:

E488: Trailing characters
4

5 回答 5

36

当and/之间的分隔符(在您的情况下)包含在其中一个中时,必须使用. 避免这种情况的一个技巧是使用不同的分隔符,例如:{pattern}{string}\#

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

PS:如果它应该做我认为应该做的事情,那么你的模式是错误的;看我的更正。

于 2013-04-05T19:43:06.973 回答
34

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

我通过选择一个块,键入:并在提示符处:'<,'>键入%s/something/other/导致:'<,'>%s/something/other/正确的语法:'<,'>s/something/other/没有百分比时发生了这种情况。

于 2020-03-02T14:42:53.180 回答
3

我遇到了这个问题并且无法让它消失,直到我发现.vimrc我有部分的文件是我从其他包含缩写的地方复制的,例如:

abbrev gc !php artisan generate:controller

该缩写会弄乱我的搜索和替换命令,这些命令通常如下所示:

:%s/foo/bar/gc

通过将其扩展gc!php artisan generate:controller,除了它不会在现场/实时进行。我提示的方式是查看命令历史记录(通过按下:和向上箭头)并查看

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

因此,如果无论您做什么都会出现尾随字符错误,我会查看内部

~/.vimrc

看看你是否能在那里找到问题。

于 2016-09-07T00:09:57.547 回答
3

我有同样的问题。

仅使用其他分隔符没有帮助。所以,另外

  1. 我没有选择任何行。

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

所以就

:%s#to_be_replaced#replacement#

做了这项工作。将所有出现的“to_be_replaced”更改为“replacement”。

于 2020-07-12T15:26:18.873 回答
2

:%s/\/apps/log_dir/g

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

于 2017-09-25T19:36:40.873 回答