#1 楼
Quincy的回答很好,但是有一种确切的方法不需要编辑缓冲区:3 matches on 2 lines
标志使n
命令打印匹配数,而不执行实际替换;使用:substitute
标志可以报告每行多个匹配。 > :%s/pattern//ng
,可以缩写为:
:global/pattern/print
这是
g
命令最简单的用法之一(令人难以置信)强大)。它会简单地打印出所有与:global
匹配的行,然后(如果有多行)您按pattern
或键入另一条命令使其消失。此命令是名称Enter
的起源,通常将其描述为grep
,其中g/re/p
代表“正则表达式”。评论
+1这是一个相当不错的答案,可以在现场进行,并且可以同时进行详细介绍。希望大多数问题都能得到这样的答案! :)
–吗?
15年2月3日在18:51
我可能一年要这样做2-3次,而且永远都记不住语法了,所以每次都要写在搜索器上。只是想对这个明确的答案表示感谢,因为它已经在我这里呆了不止一次,并且已经保存了几年,这使我陷入了糟糕的Wikia页面! (维基,而不是页面的内容)
–将
18年8月13日在20:06
次要位:g / re / p命令实际上来自ed,而不是vi。 Grep比vi早了几年。
–将
18年8月13日在20:30
我有一个nnoremap
–罗夫
19年2月6日在7:51
#2 楼
:%s/pattern//n
最后的n
标志告诉:s
命令报告匹配数,而不实际替换。阅读:h :s_flags
了解更多详细信息。评论
是不是gn?
–吗?
15年2月3日在18:50
@yo'是的,尽管g只是另一个标志,但是如果您感觉每行可能有多个匹配项,那么您也想使用g,这通常是正确的。然而,出于问题的目的,标记n更重要。
–德鲁瓦·萨加尔(Dhruva Sagar)
2015年2月3日在18:53
#3 楼
如今,您可以使用:set shortmess-=S
,每次进行
[x/y]
或/
搜索时,启用在右下角显示的?
计数。Vim的相对部分help
请注意,如果搜索找到99个以上的结果,Vim会不幸地显示
[x/>99]
:结果:(默认情况下,该插件仅限于“仅”少于100k行的文件,但是可以使用
let g:searchindex_line_limit=1000000
进行调整。)评论
这应该是公认的答案。
–webjackal
20-8-29在14:52
#4 楼
首先使用/
搜索正则表达式,然后:%s///gn
这与Dhurva的答案相同,只不过它是a。)易于使用(因为您可以预览正则表达式匹配的结果的首位结果)和b。)与
g
标志全局匹配,以计算所有匹配项。#5 楼
多亏了这个PR https://github.com/vim/vim/pull/4317,每个搜索命令都显示了vim 8.1.1270中的搜索统计信息(例如当前比赛位置和比赛次数)。确保从变量S
中删除shortmess
。#6 楼
:%s/pattern//g
您将在状态栏中看到替换数。这是
pattern
出现几次。然后只需按u
即可撤消替换。评论
这是一个可怕的解决方案,但我喜欢它。
– Sahil
20年8月12日在9:17
#7 楼
我根据以下答案在我的.vimrc文件中添加了一个映射:<c-r><c-w>
在命令行中的光标下方插入单词,在许多情况下都很方便。
在可视模式下按
<c-u>
并转到命令行时,需要'<,'>
来删除自动插入的:
。
*
寄存器包含(最后一个)可视选择,<c-r>*
将
*
寄存器的内容插入命令行(也可以用于插入模式)。
评论
:h count-items