EMACS find-grep命令切换窗口

时间:2013-08-06 20:27:40

标签: 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/*")))

它只是grep-find的包装器,因此它可以搜索我工作区中的所有文件。

我的问题在于 grep 缓冲区。当我从中选择项目时,我想将光标放在 grep 缓冲区的窗口中,以便我可以快速浏览代码,但选择一行会自动将光标移动到其他窗口,当我有超过5个项目的列表时,它会增加击键次数。无论如何,我可以在此功能中构建此功能,还是更改grep-find的设置?我一直在寻找,但没有找到解决方案。

3 个答案:

答案 0 :(得分:1)

如果你从源头挖掘lisp/progmodes/grep.el,你可能会发现grep行为的一些选项,但我真的认为看看GrepPlus可能更好更容易带来emacs grep的许多增强的库。

否则您也可以使用occur并查看如何自定义它。在发生时,当您在匹配缓冲区中时,您可以C-o而不是Ret,它将在另一个缓冲区中显示您选择的匹配项,将光标保持在匹配缓冲区中。与grep的区别在于它只适用于打开的缓冲区。我很确定grep+可能具有同等效力。你应该看看

答案 1 :(得分:1)

有两种功能可以完全按照您的要求执行:previous-error-no-selectnext-error-no-select

此外,您可能会发现有用的next-error-follow-minor-mode

答案 2 :(得分:1)

查看函数next-errorprevious-error。它们离开grep缓冲区,但它们可以在任何地方工作,例如,如果你将next-error绑定到方便的键上,那么你可以继续按下它,它将遍历grep缓冲区。