如何对所有没有文本的行进行 vim 搜索反向搜索

nel*_*aro 23 linux search vim text-editors find-and-replace

使用 grep 我可以做一个 grep -v "my search" 来获取所有没有“my search”的行

使用 sed 我可以 sed '/baz/!s/foo/bar/g' 以在没有 baz 的情况下查找行上的替换文本

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

rom*_*inl 35

:g/pattern/
Run Code Online (Sandbox Code Playgroud)

匹配找到模式的所有行。

:v/pattern/
Run Code Online (Sandbox Code Playgroud)

相反。有关:h global更多详细信息,请参阅。

你可以这样使用它:

:v/pattern/norm Ipattern not found - <CR>
Run Code Online (Sandbox Code Playgroud)

将“pattern not found -”添加到没有“pattern”的每一行,或者

:v/pattern/s/nrettap/pattern
Run Code Online (Sandbox Code Playgroud)

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

人为的例子,是的。


Kar*_*los 7

例如,要搜索包含 foo的行,请执行以下操作:

/^\(\(.*foo.*\)\@!.\)*$
Run Code Online (Sandbox Code Playgroud)

来源:http : //vim.wikia.com/wiki/Search_for_lines_not_ contains_pattern_and_other_helpful_searches

  • 我不知道 \@ 指令可以让您在搜索中引用前一个原子。很有用。 (2认同)