我想搜索一个字符串,并使用vi编辑器查找文件中出现的次数。
答案 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
用于学习:
:
,您正在从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)
我建议做:
*
进行搜索以进行"有界搜索"对于光标下的内容,或进行标准的/pattern
搜索。:%s///gn
获取出现次数。或者,您可以使用:%s///n
来获取出现次数的行数。** 我真的可以找到一个插件,可以在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;您可以更清楚地获得相同的信息。形式。