vim搜索如何反向搜索所有不带文本的行


18

使用grep,我可以执行grep -v“我的搜索”以使所有行均不包含“我的搜索”

与sed我可以 sed '/ baz /!s / foo / bar / g'查找没有baz的行上的替换文本

有没有办法做同样的事情。并且有可能但没有“ s ///”语法。仅使用“ /”搜索语法。

Answers:


29
:g/pattern/

匹配找到模式的所有行。

:v/pattern/

相反。请参阅:h global以获取更多详细信息。

您可以像这样使用它:

:v/pattern/norm Ipattern not found - <CR>

在没有“模式”的每一行之前添加“未找到模式-”

:v/pattern/s/nrettap/pattern

在没有“模式”的每一行上用“模式”替换“ nrettap”。

人为的例子,是的。


我大笑“ nrettap”。
UncleZeiv 2012年


1

使用:v commandEdit查找不匹配模式的行的传统方法是使用:v命令

:v/Warning/p

在使用大型日志文件时,您想在开始实际搜索之前过滤掉尽可能多的不相关行的一个巧妙技巧是将文件保存为临时名称,并删除其中的所有不匹配行:

:sav junk.log
:v/warning/d

现在,您正在编辑原始文件的副本,其中删除了所有不匹配“警告”的行,您可以随意对其进行编辑。

参考:https : //vim.fandom.com/wiki/Search_for_lines_not_ Contain_pattern_and_other_helpful_searches

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.