我用正则表达式替换的Vim抛出了一个“E488:尾随字符”



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

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

这给了我:

E488: Trailing characters

如果在选定的文本块内替换时出现这种情况,可能是因为您错误地键入了%s,而您应该只键入s

我选择了一个块,输入:,并在提示符:'<,'>下,输入%s/something/other/导致:'<,'>%s/something/other/,而正确的语法是:'<,'>s/something/other/,没有百分比。

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

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

PS:如果它应该做我认为它应该做的,你的模式是错误的;

我有这个问题,不能使它消失,直到我发现,我有部分的.vimrc文件,我从其他地方复制,其中包含缩写,像这样,例如:

abbrev gc !php artisan generate:controller

这个缩写会使我的搜索和替换命令变得混乱,这些命令通常是这样的:

:%s/foo/bar/gc

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

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

如果出现尾随字符错误不管你怎么做我都会查看

~/.vimrc

,看看是否能找到问题所在。

我也遇到过同样的问题。

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

  1. 我没有选择任何行。

  2. 不使用g表示全局

:%s#to_be_replaced#replacement#

完成了任务。将所有出现的'to_be_replace '替换为'replacement'。

:%s//apps/log_dir/g

要替换的字符串=/apps并替换string=log_dir所以我们需要使用"/"

这就是我如何导致我的"E488:尾随字符"偶尔我脑子里的肌肉记忆会跳一拍,就像今天这样,让我去寻找我的E488的原因:尾字符。

: % s/searchItem/changeTo/ s
最后的s导致了我的E488:尾随字符。

我应该用g

: % s/searchItem/changeTo/ g
g放在最后,效果一如既往。

最新更新