在vi编辑器中搜索字符串并获取计数

时间:2009-04-03 20:37:49

标签: search count vi

我想搜索一个字符串,并使用vi编辑器查找文件中出现的次数。

8 个答案:

答案 0 :(得分:171)

方式是

:%S /图案// GN

答案 1 :(得分:121)

您需要n标志。计算单词使用:

:%s/\i\+/&/gn   

和一个特定的词:

:%s/the/&/gn        

请参阅count-items文档部分。

如果您只需输入:

%s/pattern/pattern/g

然后状态行也会给你vi中的匹配数。

答案 2 :(得分:38)

:%S /串/串/克 会给出答案。

答案 3 :(得分:21)

(类似古斯塔沃所说,但另外:)

对于任何之前的搜索,您只需执行以下操作:

:%s///gn

不需要模式,因为它已经在搜索寄存器(@/)中。

“%” - 在整个文件中执行s/
“g” - 搜索全局(在一行中有多个匹配)
“n” - 防止替换s/ - 不删除任何内容!不得撤消任何内容!
(有关更多信息,请参阅::help s_flag

(这样,它与“搜索视觉选择的文本”完美配合,如vim-wikia tip171中所述)

答案 4 :(得分:7)

:g/xxxx/d

这将删除所有带有模式的行,并报告已删除的行数。撤消以便让他们回来。

答案 5 :(得分:3)

使用

  

:%S /图案/ \ 0 /克

当模式字符串太长而你不想再次输入它时。

答案 6 :(得分:1)

简短答案

:%s /待搜索字符串// gn

用于学习

VI编辑器中有以下三种模式 enter image description here

  • :,您正在从Command进入Command-line模式。现在,您在:之后编写的任何内容都在CLI(命令行界面)上
  • %s指定所有行。将范围指定为%意味着在整个文件中进行替换。所有替换项的语法为:%s/old-text/new-text/g
  • g指定该行中的所有匹配项。使用g标志,您可以替换整行。如果未使用此g标志,则仅替换该行中的第一次出现。
  • n指定输出出现次数
  • //双斜杠表示replacement text的省略。因为我们只想找到。

一旦出现次数,就可以按N键来一次查看一次。

要查找和计数1至10行的特定范围:

:1,10秒/ hello // gn

  • 请注意,整个文件的%,分隔的行号所代替。

要查找和替换第1至10行的特定范围:

:1,10s / helo / hello / gn

答案 7 :(得分:0)

我建议做:

  1. 使用*进行搜索以进行"有界搜索"对于光标下的内容,或进行标准的/pattern搜索。
  2. 使用:%s///gn获取出现次数。或者,您可以使用:%s///n来获取出现次数的行数。
  3. ** 我真的可以找到一个插件,可以在N 2 <上发送&#34;匹配N 1 的N / sub> lines&#34;每次搜索,但唉。

    注意: 不要对输出的棘手措辞感到困惑。前一个命令可能会给你4 matches on 3 lines之类的内容,后者可能会给你3 matches on 3 lines。虽然技术上准确,但后者具有误导性,应该说&#39; 3行匹配&#39;。所以,正如你所看到的,确实从来没有必要使用后者(仅有'#n;')形式。通过使用&#39; gn&#39;您可以更清楚地获得相同的信息。形式。