类似于 Eclipse 的 Emacs 命令来查找和打开文件

Emacs command to Find and Open File similar to Eclipse

我最近从使用 Eclipse 切换到了 emacs。我正在尝试找到一种方法来模拟 eclipse 的 Ctrl-Shift-r 功能,它允许您输入文件名,然后它开始显示当前工作区中以您输入的字符串开头的所有文件。

C-x C-f 似乎只处理当前目录中的制表符完成,而 Eclipse 的功能会遍历所有子目录以找到匹配的文件。

我正在寻找一些东西(也许有一个插件可以做到这一点),它允许您输入要查找的文件夹的名称,然后输入部分文件,然后 returns 将结果返回缓冲区.可能使用自动完成来列出匹配文件及其完整路径。

首先,避开原版 find-file 功能(即当您点击 C-x C-f 时 运行 的交互功能)。它非常有限,它迫使你一直点击 TAB,大多数人在切换到 emacs 时做的第一件事就是用更强大的东西替换 find-file

有多种选择。 ido-mode is one, helm 是另一个。前者重量轻、速度快,并且内置于 emacs 中。后者非常强大,而且力求速度也很快。

其次,递归文件搜索通常有两种方法:

  1. 目录搜索 - 就是搜索目录的时候,这里没有惊喜;
  2. 项目搜索 - 就是在您设置您正在处理的项目时,让 emacs 知道您现在对哪些文件感兴趣。

对于目录搜索,ido-find-filehelm-find-file 都是可行的选项。当您暂停输入时,Ido 会自动进行搜索; helm 使用 (C-u) M-g s 激活 grep。有关详细信息,请参阅 this SO question

对于项目搜索,您需要一个图书馆来管理您的项目。 Projectile is great for that. Set it up and use C-c p f or C-c p F to list files in current or all of your projects, respectively. Oh, and projectile uses ido by default, but there is 也有头盔支撑。

您正在寻找 projectile,它为您的项目文件编制了索引。我用了一段时间,但最近改用 helm-recentf

(global-set-key "\C-x\ \C-r" 'helm-recentf)

我将最近的文件设置为大量。几乎所有我曾经打开过的东西都只需敲几下键盘。这甚至可以兼作切换缓冲区的便捷方式。

(require 'recentf)
(setq recentf-auto-cleanup 'never)
(recentf-mode 1)
(setq recentf-max-saved-items 200)