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

kad*_*hpa 99 vi search count

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

小智 175

方式是

:%S /图案// GN

  • 这是最真实的答案,没有使用过度杀戮技巧. (2认同)
  • 最佳答案! (2认同)

dir*_*tly 121

你需要n国旗.计算单词使用:

:%s/\i\+/&/gn   
Run Code Online (Sandbox Code Playgroud)

和一个特定的词:

:%s/the/&/gn        
Run Code Online (Sandbox Code Playgroud)

请参阅count-items文档部分.

如果您只需输入:

%s/pattern/pattern/g
Run Code Online (Sandbox Code Playgroud)

那么状态行也会给你vi中的匹配数.


Moh*_*rty 38

:%s/string/string/g将给出答案.

  • 无需重复字符串,只需执行`%s/string // ng`. (9认同)

tro*_*on5 22

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

对于任何以前的搜索,您可以简单地执行:

:%s///gn
Run Code Online (Sandbox Code Playgroud)

不需要模式,因为它已经在search-register(@/)中.

"%" - s/在整个文件
"g"中执行 - 搜索全局(在一行中有多个匹配)
"n" - 防止任何替换s/- 没有删除任何内容!没有什么必须撤消!
(参见::help s_flag获取更多信息)

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


Kev*_*eck 6

:g/xxxx/d
Run Code Online (Sandbox Code Playgroud)

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

  • 请注意,这只会告诉您有多少行 - 而不是多少行.我认为德克是一个更好的解决方案. (15认同)
  • 当然,他可以省略"d",所以他不必操作. (6认同)
  • 非常危险:o (6认同)
  • 我的下面的解决方案正确地计算了一行中的多个出现,并且没有任何要撤消的内容. (4认同)
  • 这是我在 Stackoverflow 上看到的最糟糕的答案:( (2认同)

Om *_*Sao 5

简短回答

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

学习用

VI编辑器有以下3种模式 在此输入图像描述

  • :您正在进入 fromCommandCommand-line模式。现在,无论你写什么,都:可以在 CLI(命令行界面)上进行
  • %s指定所有行。指定范围意味着%在整个文件中进行替换。所有出现替换的语法是:%s/old-text/new-text/g
  • g指定行中所有出现的位置。使用gflag ,您可以替换整行。如果未使用此g标志,则仅替换该行中的第一个出现的位置。
  • n指定输出出现的次数
  • //双斜线表示省略replacement text。因为我们只是想找到。

一旦得到出现的次数,您可以按N键逐一查看出现的次数。

用于查找和计数行号 1 到 10 的特定范围:

:1,10s/你好//gn

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

用于查找和替换行号 1 到 10 的特定范围:

:1,10s/helo/hello/gn