Emacs:打开位置未知文件的最快方法

11

如何使用 shell 的 find 命令找到一个 txt 文件的路径并打开它?

比如说,我想打开一个我知道名字为 example.txt 并且我知道可以在 shell 的 find 命令中找到它的文件。

我当前的做法是:

按下 C-u(universal-argument)然后 M-!(shell command)

然后输入 find,例如:

find . -iname "example.txt"

然后完整的路径(我之前不知道)出现在缓冲区中,我剪切它,然后按下C-x C-f,删除默认写入的内容,然后粘贴我之前剪切的内容。

这个方法似乎有点冗长,需要输入很多按键,还要进行剪切和粘贴等操作。

是否有更简便的方法实现相同的功能(不需要编写新的自定义Emacs命令)?

9个回答

10

仅使用内置功能,我会:

  • 打开一个shell buffer:M-x shell
  • 运行我的find命令。
  • 将光标移动到所找到的文件路径的顶部。
  • 运行find-file-at-point命令:M-x ffap.

我经常使用find-file-at-point,因此已将其绑定到专用按键s-\(超级反斜杠)。


10
M-x find-name-dired

输入目录(默认为当前目录)和文件名(也可以使用shell通配符),然后您将获得一个包含结果的虚拟dired缓冲区。 转到所需文件并按下 'a' 键。


6

试用 ifind.el

M-x ifind /some/starting/point/example.txt

将在以下目录中搜索 /some/starting/point 下的 example.txt 文件。


3

M-x locate 是在emacs中查找和打开文件的最快方法,特别是当您知道确切的文件名时。


2
如果您的文件夹构成了一个“项目” - 即受版本控制或具有根文件夹标记(如project.el、.dir-locals.el等),您可以使用find-file-in-project来解决这个问题。在我看来,这是一个非常好的解决方案。

1

1
Icicles中,您可以通过匹配路径的任何部分而不仅仅是相对文件名来查找文件。您可以使用子字符串、正则表达式和模糊匹配。您可以将多个搜索模式(渐进完成)AND在一起。请参见多命令icicle-locate-file

http://www.emacswiki.org/emacs/Icicles_-_File-Name_Input


0

M-x find-dired RET

然后你会得到一个由 find 返回的 dired 缓冲区,其中显示了你的文件。你可以使用经典的 dired 命令来打开/移动/重命名... 文件和目录。


0

我很惊讶全局搜索(globalff)没有被提及作为一个可行的选项。当你无法回忆起确切名称时,虽然它需要定位命令,但它非常快速和有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接