Vim:计算字符或单词的所有出现次数(包括同一行中的多次出现)

Vim:计算字符或单词的所有出现次数(包括同一行中的多次出现)

我尝试使用 Vim 计算文件中字符或单词的所有出现次数。这意味着还应该考虑同一行中同一单词的多次出现。之前在几篇文章中已经讨论过这个问题:在 Vim 中计算出现次数而不标记缓冲区已更改,在 vi 编辑器中搜索字符串并获取计数,有没有办法使用 :g 来计算 Vim 中的匹配数?。我的默认策略是使用:

%s/PATTERN//gn

对于字符和

%s/\<PATTERN\>//gn

为了言语。 Vim 帮助中提到了这一点。然而,这两种解决方案似乎都忽略了同一行中的多次出现。这是一个例子:

UTg    UTg    D1U1K1    UTg    D1U1K2    UTg    D1U1TW01    UTg    D1U1TW02    UTg    D1U1TW03    UTg    D1U1TW04    UTg    D1U1TW05    UTg    D1U1TW06    UTg    D1U1TW07    UTg    D1U1TW08    UTg    D1U1TW09    UTg    D1U1TW10    UTg
UTg    UTg    D1U2K1    UTg    D1U2K2    UTg    D1U2TW01    UTg    D1U2TW02    UTg    D1U2TW03    UTg    D1U2TW04    UTg    D1U2TW05    UTg    D1U2TW06    UTg    D1U2TW07    UTg    D1U2TW08    UTg    D1U2TW09    UTg    D1U2TW10    UTg
UTg    UTg    D1U3K1    UTg    D1U3K2    UTg    D1U3TW01    UTg    D1U3TW02    UTg    D1U3TW03    UTg    D1U3TW04    UTg    D1U3TW05    UTg    D1U3TW06    UTg    D1U3TW07    UTg    D1U3TW08    UTg    D1U3TW09    UTg    D1U3TW10    UTg
UTg    UTg    D1U4K1    UTg    D1U4K2    UTg    D1U4TW01    UTg    D1U4TW02    UTg    D1U4TW03    UTg    D1U4TW04    UTg    D1U4TW05    UTg    D1U4TW06    UTg    D1U4TW07    UTg    D1U4TW08    UTg    D1U4TW09    UTg    D1U4TW10    UTg

使用时%s/UTg//gn它将输出4而不是56.那么如何计算 Vim 中同一行中的所有出现次数(包括多次出现次数)呢?

答案1

可以通过设置默认启用替换/g标志:s

set gdefault

.vimrc。如果使用此设置

:%s/PATTERN/gn

将使 Vim 每行计算一次字符或单词的出现次数,并忽略所有其他出现的次数。要么使用

:%s/PATTERN/n

在这种情况下或set gdefault从 中删除.vimrc

相关内容