在给定的regexp上,Emacs find-grep-dired然后自动isearch-forward

我通常会
find-grep-dired
在项目目录中查找表达式。这给了我一个很好的
dired
视图,包含该表达式的所有文件。但我的下一步总是打开其中一个文件并使用相同的搜索表达式执行
isearch-forward
。如何保存自己每次输入两次搜索单词(如果我想编辑多个文件,可以输入两次以上)?     
已邀请:
这应该适合你: 像往常一样跑
find-grep-dired
按* t(dired-toggle-marks)标记所有文件。 按A开始
dired-do-search
。出现提示时,按M-p键不会输入,这将显示find-grep regexp,因为这两个函数都使用相同的提示历史列表 您将进入第一个文件中的第一场比赛。这是有趣的部分,只需按M-,即可转到所有匹配文件的下一场比赛。 利润? (抱歉,无法抗拒) 如果你想一次性完成所有这些,你可以去:
(defun find-grep-dired-do-search (dir regexp)
  "First perform `find-grep-dired', and wait for it to finish.
Then, using the same REGEXP as provided to `find-grep-dired',
perform `dired-do-search' on all files in the *Find* buffer."
  (interactive "DFind-grep (directory): nsFind-grep (grep regexp): ")
  (find-grep-dired dir regexp)
  (while (get-buffer-process (get-buffer "*Find*"))
    (sit-for 1))
  (with-current-buffer "*Find*"
    (dired-toggle-marks)
    (dired-do-search regexp)))
    
您可以将您在find-grep-dired中使用的搜索字符串存储在kill ring(C-SPACE C-a M-w)中。然后使用kill ring(C-s M-y)中的字符串在文件中搜索。 M-y会猛拉最后一串被杀死的文字。 您可以使用C-h k C-s显示isearch-forward的其他(有用)绑定。     
不同的方法怎么样?尝试使用
igrep.el
包装中的
M-x igrep-find
。 默认情况下,它会搜索模式的所有匹配项,但您可以将行为更改为仅查找第一个此类事件:
(setq igrep-options "-i -m 1")   ;; I like -i for case-insensitivity
这将导致编译样式缓冲区(名为
*igrep*
),每个文件只有一行,当您单击该行(或执行C-x`)时,您将自动放在具有匹配项的行上。另外,您可以在
*igrep*
缓冲区中看到匹配的行。 显然,如果你想在每个文件中看到多个匹配项,请在
-m
之后更改数字,或者完全省略该部分。     

要回复问题请先登录注册