我通常做find-grep-dired
在项目目录中查找表达式。这给了我一个很好的包含该表达式的所有文件的dired
视图。但是我的下一步总是打开其中一个文件,并使用相同的搜索表达式执行isearch-forward
。我怎样才能让自己不用每次输入两次搜索词(或者如果有多个文件需要编辑,可以输入两次以上)?Emacs find-grep-dired然后在给定的正则表达式自动isearch-forward
3
A
回答
5
这应该为你工作:
- 运行
find-grep-dired
像往常一样 - 按* T(dired-切换的标志),以纪念所有文件。
- 按A开始
dired-do-search
。当出现提示时,而不是打字,请按M-p,这将调出您的find-grep正则表达式,因为这两个函数使用相同的提示历史列表 - 您将被带到第一个文件中的第一个匹配。这里有趣的部分,只需按下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)))
3
您可以将您在find-grep-dired中使用的搜索字符串存储在杀戒(C-SPACE C-a M-w)中。然后,您使用杀戒中的字符串(C-s M-y)在文件中进行搜索。 M-y会抽出最后一串杀死的文本。
您可以使用C-h k C-s显示isearch-forward的其他(有用)绑定。
+0
谢谢,这是一种方式,当然。我希望能少一些牵涉其中的东西,比如单个绑定到最后一个搜索字符串的isearch。 – 2011-02-11 15:35:25
2
怎么样不同的方法?尝试使用igrep.el
包中的M-x igrep-find
。
默认情况下,它会搜索所有出现的格局,但你可以改变行为,只要找到第一个事故发生有:
(setq igrep-options "-i -m 1") ;; I like -i for case-insensitivity
这将导致编译风格缓冲(命名为*igrep*
),每个文件都有一行,当你点击该行(或者执行Cx`)时,你将自动被放在匹配的行上。另外,您可以在*igrep*
缓冲区中看到匹配的行。
显然,如果您想要查看每个文件的多个匹配项,请更改-m
之后的数字,或者完全忽略该部分。
相关问题
- 1. Emacs的正则表达式组正则表达式替换
- 2. 正则表达式的问号(在Emacs)
- 3. 正则表达式去除?然后
- 4. 正则表达式在Emacs中搜索
- 5. 正则表达式查找文件的段,然后用正则表达式子
- 6. 正则表达式在给定字符后忽略模式
- 7. 正则表达式:在正则表达式区域内匹配多次(emacs)
- 8. 正则表达式 - 如何给定词
- 9. 正则表达式到URL后剥离字符在Emacs
- 10. emacs空间正则表达式搜索
- 11. Emacs复制正则表达式
- 12. 使用Emacs替换正则表达式
- 13. PHP自定义的正则表达式
- 14. 自定义的正则表达式
- 15. grok的自定义正则表达式
- 16. 给定字符串后的正则表达式匹配
- 17. JAVA正则表达式:让自定义的正则表达式String.split()
- 18. Perl的正则表达式 - 动态正则表达式
- 19. 如何定义一个Emacs命令“查询替换,正则表达式”使用特定的正则表达式
- 20. 自动正则表达式生成器
- 21. 自动机 - 正则表达式
- 22. 正则表达式中的字符后,然后再选择
- 23. 使用如果然后其他的正则表达式在Java
- 24. 自定义正则表达式
- 25. 正则表达式(正则表达式)
- 26. 正则表达式(正则表达式)
- 27. Django在DB中存储正则表达式,然后在页面
- 28. Emacs正则表达式匹配行尾,后跟新行
- 29. 正则表达式正则表达式返回的值正则表达式
- 30. 如何自动生成满足给定正则表达式的示例文本?
`dired-do-search`在dired缓冲区中绑定到`A`。 – ataylor 2011-02-11 19:05:07
谢谢,我做了编辑。 – 2011-02-13 02:09:47