https://github.com/emacs-helm/helm-ls-git
在谷歌上找不到它的教程。
这意味着它在我们的宇宙中不存在?
我正在寻找一种在 emacs 中查找文件和 grep 文件的方法。
希望像在 sublime 中一样简单project directory opened
。
(你的搜索会自动限制在你在 sublime 中指定的目录)
https://github.com/emacs-helm/helm-ls-git
在谷歌上找不到它的教程。
这意味着它在我们的宇宙中不存在?
我正在寻找一种在 emacs 中查找文件和 grep 文件的方法。
希望像在 sublime 中一样简单project directory opened
。
(你的搜索会自动限制在你在 sublime 中指定的目录)
您所追求的功能dired
已经成功多年。您在帖子中链接的文件是在内置功能之上添加的便利功能的小幅增强,它并不真正处理在 Git 版本控制系统上下文之外搜索文件。
以下是一些如何使用的示例dired
:
M-xfind-name-dired
,回答提示以选择要搜索的目录,并可能通过提供正则表达式来匹配文件名来进行优化。然后,您将看到缓冲区,其中列出了您迄今为止选择的所有文件。您可以从此处进一步细化% m并为其提供正则表达式以过滤文件名,或者只需点击t选择缓冲区中的所有文件。
然后点击A并编写正则表达式以在所选文件中搜索。此命令的效果是打开找到匹配项的文件。关闭文件后,或返回到原来的缓冲区后,可以按M-,移动到下一个匹配项。
如果这听起来太复杂,那么您可以在您选择的目录M-xfind-dired
中调用find
您通常可以提供的参数find
只需 grep 并将匹配项显示在专用缓冲区中,您可以执行此操作M-xfind-grep
- 这将调用find
它的输出并通过管道传输到grep
. 然后,您需要根据自己的喜好修改用于调用它的命令。
M-xfind-grep-dired
会做类似的事情,但是它将显示在dired
缓冲区中找到匹配项的文件,而不是发生匹配项的行。
最后,可能还有更多方法可以做到这一点,具体取决于您的特定任务以及您最终要完成的任务。有时,调用 shell 命令将结果直接放入缓冲区可能是最好的方法。其他时候,您可能想要编写自己的 eLisp 函数来对结果进行更详细的处理。天空是他的极限:)
这可能无法回答您的整个问题,但我使用下面的 elisp 作为快捷方式,用于对特定文件夹下具有一组扩展名列表的所有文件进行 grep:
(defun pgrep (regexp)
"rgrep files inside a project folder"
(interactive
(list (grep-read-regexp)))
(grep-compute-defaults)
(rgrep regexp "*rb *erb *js *css *scss" "~/path/to/folder/"))
然后我就跑M-x pgrep foo
对于更复杂的事情,我直接运行rgrep
- 它允许您指定根文件夹、搜索字符串和扩展名。