2

我的 .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 的设置吗?我一直在寻找,但没有找到解决方案。

4

3 回答 3

1

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

于 2013-08-07T10:36:35.517 回答
1

有两个功能可以完全按照您的意愿行事:previous-error-no-selectnext-error-no-select.

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

于 2013-08-07T07:34:27.463 回答
1

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

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

于 2013-08-06T21:30:52.670 回答