如果我输入/regex
,光标会暂时跳转到第一个匹配项,并且所有匹配项都会突出显示。当我打字时,它会更新。当我准备进行替换时是否有可能出现这种行为?例如,当我正在处理复杂的正则表达式时:%s/\<regex\>/
,我想在扣动扳机并更改所有内容之前知道匹配的是什么。有什么办法可以做到吗?
答案1
使用以下命令键入您的搜索/(或者?)首先,这将允许您调整您的正则表达式(因为您使用的是 incsearch)
一旦一切顺利,您就可以使用以前的通过在“搜索”项中使用两个分隔符,在替代命令中搜索模式(您刚刚使用的模式):
/elephant " find the next elephant
:%s//rhino/gc " make then all rhinos!
当然,您可以像平常一样使用选择和范围。
:1,15s,,cougar,g
:'<,'>s::tiger:
答案2
一个选择是您可以有一个确认标志c
。
:%s;regex;replacement;gc
:h s_flags
:
[c] Confirm each substitution. Vim highlights the matching string. You can type:
'y' to substitute this match
'l' to substitute this match and then quit ("last")
'n' to skip this match
<Esc> to quit substituting
'a' to substitute this and all remaining matches
'q' to quit substituting
您还可以尝试使用grep
命令来查看过滤后的输出和突出显示的原始文件。
:g/re/p
或者:g/re/
答案3
/
好吧,查看正则表达式将匹配什么的简单方法是使用所需的正则表达式进行搜索。当您输入时,它会跳转到第一个匹配项并对其进行标记。尝试一下 -vim
不会让您失望的。