是否可以显示/隐藏vi或Vim中的所有匹配行?不突出显示,而仅显示那些行。
例如,我有一个带有单词word的文本ERROR
。如何使其仅显示包含的行,ERROR
以及如何仅显示不包含的行ERROR
?
是否有一个解决方案,而不删除所有匹配的行,然后将其撤消?
是否可以显示/隐藏vi或Vim中的所有匹配行?不突出显示,而仅显示那些行。
例如,我有一个带有单词word的文本ERROR
。如何使其仅显示包含的行,ERROR
以及如何仅显示不包含的行ERROR
?
是否有一个解决方案,而不删除所有匹配的行,然后将其撤消?
Answers:
您知道该:global
命令吗?这是您想要的吗?
:g/ERROR
相反:
:g!/Error
或等效地:
:v/Error
g<
以再次查看,或者@:
您是否没有运行和命令。
取决于您的用例的另一种方法是使用vimgrep及其在quickfix中的结果。您可以执行以下操作:
:vimgrep pattern %
将搜索当前文件,并带您到第一个搜索结果。更重要的是,它还将结果放入“快速修复列表”中。
:copen
然后将在单独的quickfix窗口中打开quickfix列表。因此,您将拥有一个单独的窗口,其中包含上一个vimgrep的所有行。然后,您可以在quickfix-window内单击Enter或双击一行以跳到原始文件中的相应行。
:colder
将使您返回到较早的quickfix列表(较早的vimgrep结果)。和:cnewer
期待更新的搜索结果。
请注意,快速:make
修复列表在运行时也会更新(这就是为什么将其称为快速修复来修复错误)的原因。因此,快速修复列表还有一个替代方案,称为“位置列表”。要使用它,可以使用:lvimgrep
,然后使用l前缀命令而不是c前缀命令- :lopen
,:lolder
:lnewer
。
当然,您还可以做更多的事情。看到:help quickfix
以获取更多信息。
PS,您说过,您不需要删除行然后撤消它们的方法。但是,既然您g/ERROR
将答案标记为答案,我想我会指出一种快速而肮脏的方法g!/ERROR/d
。然后,您可以使用轻松撤消它u
。同样,仅供参考,您可以:set hlsearch
突出显示与:g
命令匹配的模式。
最好的方法是->
:vimgrep /something/g % | copen
这将打开您的关键字的匹配列表,并且还将在quickfix窗口中仅显示匹配的行。
如果不考虑当前文件,则将%替换为文件路径。
一些骇人听闻的肮脏方式可以做到这一点:
:w (save)
ggdG (deletes everything)
:.!grep something % (replace current line with grep output)