Answers:
:[vim]grep
over的一个好处/?
是,结果将被放入quickfix列表(或位置列表,如果使用的话:l[vim]grep
),这意味着您可以使用来拉出所有匹配项的列表:cl
。然后,您可以使用数字直接从列表中转到所需的结果。
这也意味着您可以使用与:[vim]grep pattern %
搜索整个代码库相同的命令来搜索当前缓冲区,:[vim]grep pattern path
因此它具有一些很好的对称性。
此外,您可以分支并使用Silver Surfer / Ripgrep为您提供非常强大的搜索。这些可以映射到:[vim]grep
命令。
我看到3个主要优点
使用一致的regex
引擎/语法:使用:grep/vimgrep
允许您定义一个grepprg
,可以将其定义为grep/ack/ag
etc。使用此引擎,您可以使用一致的regex
引擎搜索当前缓冲区或多个缓冲区/文件。另一方面,如果您使用vim的/pattern
选项,则会陷入vim的默认正则表达式引擎中,该引擎的语法与extended regular expression
语法不同。因此,无论何时您必须搜索表达式,都必须考虑/记住您应该使用\)
还是正义)
和其他差异。这可能非常烦人(/programming/3864467/whats-the-difference-between-vim-regex-and-normal-regex)
vimgrep填充快速修复程序/位置列表:使用:grep/vimgrep
可以填充搜索列表。(https://medium.com/@lakshmankumar12/quickfix-and-location-list-in-vim-ca0292ac894d)。
如果您确实想使用位置列表,]q
如果您有Tim-Popes不受损害的插件(https://github.com/tpope/vim-unimpaired),则可以使用快捷方式进行导航。
在vim中进行复杂的搜索:通常,如果必须进行复杂的搜索,则可能必须使用命令行。但是,如果定义greprg
正确并使用诸如[1]之类的命令
:vim / pattern1 / find . -type f
您可以进行非常复杂的搜索,并在location list
或中显示搜索结果quickfix list
。
[1] http://vimcasts.org/episodes/search-multiple-files-with-vimgrep/