2013-08-16 36 views
1

我想用下面的命令来算vim的一些正则表达式的出现:Vim的错误E488:关于替代尾随字符GN旗帜

:%s/class=//gn 

甚至:

:%s/class=/&/gn 

但我不断收到E488: Trailing characters。这甚至在官方文档中建议http://vimdoc.sourceforge.net/htmldoc/tips.html#count-items

任何人都可以帮忙/解释一下吗?我发现工作的唯一方法是:%s/class=/&/g,但这在我看来有点矫枉过正,因为它实际上用相同的字符替换了正则表达式,而不是只计算出现次数。

我使用VIM 6.3

回答

2

一些搜索,我发现这个在:help improvements-7后:

To count items (pattern matches) without changing the buffer the 'n' flag has been added to :substitute.

因此你必须至少升级到7.0。 :-)

+0

我仍然在使用提供的技巧来使用'E488:Trailing characters' :(如果这很重要,我正在使用VIM 6.3. – Patryk

+0

那么,6.3是在2004年发布的,所以也许这个功能是在后续版本中引入的。或者你的意思是7.3?)也许':%s/class \ =/\ 0/gn'正在工作吗? – mhinz

+0

好吧,我已经试过了7.2,它正在工作(即使没有转义字符)。很多,你可以编辑你的答案,指出旧版本的问题,我会接受它 – Patryk

1

:s命令的n标志已经用Vim 7实现了。你需要升级你的Vim版本。考虑到Vim 6.2(我认为它是在2003年6月1日发布的)在10多年前发布,所以升级它不失为一个好主意,因为它包含了一些新功能和bug修复。