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

Ree*_*Law 3 emacs grep dired

我经常find-grep-dired在项目目录中找到一个表达式.这给了我一个dired包含该表达式的所有文件的漂亮视图.但我的下一步总是打开其中一个文件并isearch-forward使用相同的搜索表达式.如何保存自己每次输入两次搜索单词(如果我想编辑多个文件,可以输入两次以上)?

Jos*_*Gay 5

这应该适合你:

  1. find-grep-dired照常运行
  2. *t(直接切换标记)标记所有文件.
  3. A 开始dired-do-search.出现提示时,按M-p,这将显示您的find-grep正则表达式,而不是键入,因为这两个函数都使用相同的提示历史记录列表
  4. 您将进入第一个文件中的第一场比赛.这是有趣的部分,只需按下M-,即可转到所有匹配文件的下一场比赛.
  5. 利润?(抱歉,无法抗拒)

如果你想一次性完成所有这些,你可以去:

(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)))
Run Code Online (Sandbox Code Playgroud)