如何计算Vim中重复行的重复次数?

现在我正在使用 Gvim 在 Windows 上工作。我想要一种不使用操作系统的外部命令的纯 Vim 方式,来计算 Vim 中重复行的重复次数。换句话说,我想要一种像 ":!sort % | uniq -c" 这样的纯 Vim 方式。

回答

没有现成的等价物。下面是一个快速而肮脏的近似值。

正在做:

:echo getline(1,'$')->map({ idx, val -> getline(1,'$')->count(val) .. ' ' .. val })->sort()->uniq()->join("n")

在这个缓冲区上:

foo
foo
bar
baz

呼应这一点:

1 bar
1 baz
2 foo

在命令行中,这应该提供一个很好的起点。

分解:

:echo {expr}

{expr}回显命令行中的输出。

getline(1,'$')

返回包含缓冲区中每一行的列表。

->map({ idx, val -> getline(1,'$')->count(val) .. ' ' .. val })

将列表中的每一项加上它在列表中的计数。

->sort()

对列表进行排序。

->uniq()

从列表中删除重复项。

->join("n")

最后将它与换行符作为分隔符连接起来,以便在回显到命令行时看起来不错。


以上是如何计算Vim中重复行的重复次数?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>