隐藏Vim中的所有(非)匹配行
是否可以在vi或Vim中显示/隐藏所有匹配行?不高亮显示,只显示那些线条 例如,我有一个带有单词隐藏Vim中的所有(非)匹配行,vim,vi,Vim,Vi,是否可以在vi或Vim中显示/隐藏所有匹配行?不高亮显示,只显示那些线条 例如,我有一个带有单词ERROR的文本。如何使其仅显示包含错误的行,以及如何仅显示不包含错误的行 有没有一种解决方案不删除所有匹配的行,然后将其撤消?您可以使用 :g/ERROR/ 打印所有有错误的行 还有一个Vim插件,我看过很多次,但没有使用: 您知道:global命令吗?这是你想要的吗 :g/ERROR 相反地: :g!/Error 或相当于: :v/Error 另一种取决于您的用例的方法是使用vimgrep
ERROR
的文本。如何使其仅显示包含错误的行
,以及如何仅显示不包含错误的行
有没有一种解决方案不删除所有匹配的行,然后将其撤消?您可以使用
:g/ERROR/
打印所有有错误的行
还有一个Vim插件,我看过很多次,但没有使用:
您知道
:global
命令吗?这是你想要的吗
:g/ERROR
相反地:
:g!/Error
或相当于:
:v/Error
另一种取决于您的用例的方法是使用vimgrep及其在quickfix中的结果。您可以执行以下操作:
:vimgrep pattern%
将搜索当前文件,并将您带到第一个搜索结果。更重要的是,它还将结果放入“快速修复列表”中
:copen
将在单独的快速修复窗口中打开快速修复列表。因此,您将有一个单独的窗口,其中包含上一个vimgrep中的所有行。在“快速修复”窗口中,您可以按Enter键或双击一行以跳转到原始文件中的相应行
:colder
将允许您返回旧的快速修复列表(旧的vimgrep结果)。并且:cnewer
会前进到更新的搜索结果
请注意,在运行:make
时,快速修复列表也会更新(这就是为什么它被称为快速修复以修复错误)。因此,快速修复列表还有一个替代品,称为“位置列表”。要使用它,请使用:lvimgrep
,然后使用l前缀命令而不是c前缀命令-:lopen
,:lolder
,:lnewer
当然,你可以做的还有很多。有关更多信息,请参阅:帮助快速修复
PS,你说过你不想要一种删除行然后撤消行的方法。但是既然你把g/ERROR
标记为答案,我想我会指出一个快速而肮脏的方法是做g/错误/d
。然后,您可以使用u
轻松撤消它。另外,您可以执行:设置hlsearch
以突出显示与:g
命令匹配的模式。您可能指的是使用更少的vi vim命令
&/模式/
显示包含/pattern/(如grep)的行。最好的方法是->
:vimgrep /something/g % | copen
这将打开关键字的匹配列表,并且在quickfix窗口中仅显示匹配的行
如果不考虑当前文件,则将%替换为文件路径。:vimgrep/something/g%| copen
非常有效。另外,:g//d
可用于删除带有模式的行,如果您碰巧使用了fzf
,您可以使用:
:所有打开的文件中的行
:仅在打开的缓冲区中显示
:Rg[pattern]
使用ripgrep
一些俗不可耐的肮脏方法:
:w (save)
ggdG (deletes everything)
:.!grep something % (replace current line with grep output)
+1获取foldsearch插件的链接。它不引人注目,而且可以派上用场。这不是很好。滚动到底部后,命令完成,所有内容再次显示。它并没有真正隐藏这些内容。@KanLi在不考虑当前文件的情况下,用文件路径点击gReplace%。您能用与模式不匹配的行来执行此操作吗?谢谢关于“:g!/ERROR/d”的提示比公认的答案要好。你能用不符合模式的线条来回答吗?这正是这个问题的另一个答案。