1

我想计算光标下行的出现次数。我打算用

:%s/pattern/&/gn

命令。那么如何指定光标下的行来代替pattern

4

2 回答 2

3

您可以通过表达式 register插入当前行。对于文字匹配,将正则表达式切换到非常神奇的模式 ( \V),并转义任何反斜杠和行中的分隔符:

:%s/\V<C-r>=escape(getline('.'), '/\')<CR>/&/gn

根据您要准确计算的内容,您可能还需要锚定(\^...\$在非常游手好闲的模式下)该模式。

除了直接插入 via 之外<C-r>,您还可以构建命令 via :execute。这在函数中更合适。

:execute '%s/\V' . escape(getline('.'), '/\') . '/&/gn'
于 2013-08-02T09:44:49.873 回答
0

如果您正在寻找罐装插件解决方案,我的SearchPosition 插件可以计算出现次数。有了它,V<A-m>将显示如下摘要:

On sole match in this line, 8 following, 2 in previous lines; total 10 for /this line\n/
于 2013-08-02T10:44:01.043 回答