Function EMACS查找grep命令切换窗口

Function EMACS查找grep命令切换窗口,function,emacs,grep,elisp,find-grep,Function,Emacs,Grep,Elisp,Find Grep,我的.emacs中有以下内容 (defun find-in-workspace(term) (interactive "sSearchInWorkspace: \n") (grep-find (concat "grep -rnH --include=\*.{c,cpp,h} --include=-e '" term "' /home/workspaces/*"))) 这只是grepfind的包装,它可以搜索我工作区中的所有文件 我的问题是grep缓冲区。当我从grep缓冲区中选择项目时

我的.emacs中有以下内容

(defun find-in-workspace(term)
  (interactive "sSearchInWorkspace: \n")
  (grep-find (concat "grep -rnH --include=\*.{c,cpp,h} --include=-e '" term "' /home/workspaces/*")))
这只是grepfind的包装,它可以搜索我工作区中的所有文件


我的问题是grep缓冲区。当我从grep缓冲区中选择项目时,我希望将光标保持在grep缓冲区的窗口中,这样我就可以快速浏览代码,但是选择一行会自动将光标移动到另一个窗口,当我有超过5个项目的列表时,这会增加击键次数。我是否可以将此功能构建到此功能中,或者更改grep find的设置?我一直在搜索,但还没有找到解决方案。

可能有一些grep行为的选项,如果您从源代码中深入研究
lisp/progmodes/grep.el,您可能会发现这些选项,但我真的认为查看库可能会更好、更容易,因为它带来了对emacs grep的许多增强


否则,您也可以使用
occure
并查看如何对其进行自定义。在“发生”中,当您在匹配缓冲区中时,可以使用它
C-o
而不是Ret,这将在另一个缓冲区中显示您选择的匹配,并将光标保持在匹配缓冲区中。与grep的不同之处在于,它只适用于打开的缓冲区。我相当肯定
grep+
可能也有类似的功能。您应该看一看

有两个函数可以完全执行您想要的操作:
上一个错误无选择
下一个错误无选择


此外,您还可以找到有用的
下一个错误跟随次要模式

请参阅函数
下一个错误
上一个错误
。它们离开grep缓冲区,但在任何地方都可以工作,因此,例如,如果您将
下一个错误
绑定到一个方便的a键,那么您可以继续按下它,它将在grep缓冲区上迭代。

如果您使用
查找grep dired
和from dired
C-o
(这将文件显示在另一个缓冲区中,而不将点移动到该缓冲区)。这正是我一直在寻找的,非常感谢!:)我现在已经将它们绑定到ctrl-tab和backtab。我很早就尝试过这样做,但没想到哈哈,多年来一直潜伏在stackoverflow上,但从未注意到复选标记。再次感谢!