我想使用 vi 编辑器搜索字符串并查找文件中出现的次数。
:% s/string/string/g 会给出答案。
你需要 n标志。计算单词使用:
n
:%s/\i\+/&/gn
还有一个特别的词:
:%s/the/&/gn
See count-items documentation section.
count-items
如果你只是简单地输入:
%s/pattern/pattern/g
then the status line will give you the number of matches in vi as well.
:g/xxxx/d
这将删除所有带有模式的行,并报告删除了多少行。撤消操作后返回这些行。
就是这样
:% s/pattern//gn
使用
:% s/pattern/0/g
当模式字符串太长,你不喜欢再次输入它。
(与古斯塔沃说的相似,但另外:)
对于任何 前情提要搜索,你可以简单地做:
:%s///gn
不需要模式,因为它已经在搜索寄存器(@/)中。
@/
“%”-在整个文件中执行 s/ “ g”-搜索全局(在一行中有多个命中) “ n”-防止任何取代 s/-什么都没删除!没有什么必须撤消! (详情请参阅: :help s_flag)
s/
:help s_flag
(通过这种方式,它可以完美地与“ 搜索视觉选定的文本”一起工作,如 Vim-wikia tip171所述)
I suggest doing:
*
/pattern
:%s///n
我真的可以找到一个插件,它可以在每次搜索时提供“ match N of N1 on N2 lines”的消息,但是,唉。
注: 不要被输出的复杂措辞所迷惑。前一个命令可能提供类似于 4 matches on 3 lines的内容,而后一个命令可能提供 3 matches on 3 lines。虽然 technically准确,后者是误导,应该说’3行匹配’。因此,正如您所看到的,确实没有必要使用后一种(仅仅是’n’)形式。您可以通过使用“ gn”表单获得相同的信息,更清楚地获得更多信息。
4 matches on 3 lines
3 matches on 3 lines
简短的回答 :
:% s/string-to-be-search//gn
为了学习 :
There are 3 modes in VI editor as below
Command
Command-line
:
%s
%
:%s/old-text/new-text/g
g
replacement text
一旦得到出现的次数,您可以按 N键,看到出现一个接一个。
N
用于查找和计算行号1至10的特定范围:
: 1,10 s/hello//gn
,
用于查找和替换行号1至10的特定范围:
: 1,10 s/helo/hello/gn