emacs - 如何在子目录中进行查找文件搜索

Eug*_*ako 9 emacs icicles

我想为Emacs实现Resharper的"Go To File"功能.当按下提到的快捷方式时,Resharper弹出一个接受通配符字符串的文本框,并显示一个自动完成菜单,列出项目中与该通配符匹配的所有文件:

"转到文件"对话框http://www.jetbrains.com/resharper/features/screenshots/50/navigation_gotofile.png

就目前而言,我知道一种粗略的方式来实现或多或少等同的东西.它涉及运行diredwith -lR然后调用dired-isearch-filenames- 这将开始对某些根目录中的整个文件层次结构进行增量搜索.

UPD.我也知道打开缓冲区的选项,将它们全部保存在内存中并使用switch-to-buffer.这个解决方案可以很好地使用ido,但它不是100%防弹(如果添加或删除某些文件会怎么样?).它也不能很好地使用tabbar,因为选项卡将显示项目中包含的所有文件,但不会显示代表我当前上下文的项目的子集.

但是,这显示了许多不必要的信息,缺乏自动完成功能.我已经采取一看idoicicles,但他们似乎只在当前目录下浅的工作.是否有Emacs插件可以帮助我实现目标?

san*_*inc 5

虽然您可能不希望打开大量缓冲区,但您可以将IDO挂钩到recentf跟踪最近打开的文件:

(recentf-mode 1)
(setq recentf-max-saved-items 300)

(defun ido-choose-from-recentf ()
  "Use ido to select a recently opened file from the `recentf-list'"
  (interactive)
  (find-file (ido-completing-read "Open file: " recentf-list nil t)))

(global-set-key [(meta f11)] 'ido-choose-from-recentf)
Run Code Online (Sandbox Code Playgroud)

多年来我一直在使用这个技巧,它是我需要的所有文件切换的99%.

除此之外,我用的M-x rgrep,你可能也想看看M-x find-diredM-x find-grep-dired.

如需更多选项,请查看此类似问题的答案.