假设我有一个格式如下的文件:
file1:123
file2:4444
some/other/file:2233
这表示命令的搜索结果grep
(即格式file:line-number
)。
我想要一个 vim 插件,它可以让我快速浏览这些点击。它将显示一个两窗格窗口(水平分割),顶部窗格显示命中,底部窗格显示当前选定的命中。更改顶部窗格中的选择会在底部窗格中指定的行号处显示指定的文件。
有人遇到过这样的事情吗?我什至会考虑非 vim 解决方案(emacs/专用程序,...)。
答案1
在 Emacs 中,运行打开 grep 结果并运行M-x grep-mode
.
如果您将 grep 结果保存在一个文件中,而该文件不在您运行 grep 的目录中,则需要运行M-x cd
以更改到正确的目录。
输出grep
需要:
在行号后面包含 ,即您需要有file_name:line_number:text
,其中text
是可选的,但第二个:
不是。您可以通过调整来更改此设置grep-regexp-alist
。
当然,如果您运行M-x grep
,所有这些都会自动运行。
答案2
在维姆命令模式:
对于内部 grep,
:vimgrep pattern-to-search files
:copen
请参阅:help vimgrep
寻求帮助。
对于外部 grep,
:grep pattern-to-search files
:copen
请参阅:help grep
寻求帮助。
答案3
Emacs 通过以下方式支持这一点rgrep和lgrep命令(输入M-x rgrep
或M-x lgrep
,其中是 Emacs 的+M-x
表示法),至少从版本 22 开始,这些命令就包含在 Emacs 中。Altxrgrep运行递归 grep 搜索,而lgrep仅限于单个目录中的文件。
他们展示grep结果产生一个单独的窗格,每行一个;您可以通过以下方式导航结果:
单击结果行(将在另一个窗口中打开相关文件),或者
反复按CX`(Ctrl+x后跟反勾键):每次按下此组合键时,当前窗格将显示下一个grep就在名单上。强调文字
更多信息请参见GNU Emacs 手册,“Grep 搜索”一章
笔记:在 Emacs 的术语中,窗格称为窗户,一个窗口称为框架。