我想为 Emacs 实现类似 Resharper 的“转到文件”功能。当按下上述快捷键时,Resharper 会弹出一个接受通配符字符串的文本框,并显示一个自动完成菜单,其中列出了项目中与该通配符匹配的所有文件:
(source: jetbrains.com http://www.jetbrains.com/resharper/features/screenshots/50/navigation_gotofile.png)
目前,我知道一种粗略的方法来实现或多或少相同的目标。它涉及跑步dired
with -lR
然后调用dired-isearch-filenames
- 这将开始对某个根目录内的整个文件层次结构进行增量搜索。
更新。我还知道打开缓冲区负载的选项,将它们全部保存在内存中并使用switch-to-buffer
。该解决方案适用于ido
,尽管它不是 100% 防弹(如果添加或删除某些文件怎么办?)。它也不能很好地配合tabbar
,因为选项卡将显示项目中包含的所有文件,但不显示代表我当前上下文的项目子集。
然而,这显示了很多不必要的信息并且缺乏自动完成功能。我看过了ido
and icicles
,但它们似乎工作得很浅,仅在当前目录内。有一个 Emacs 插件可以帮助我实现我的目标吗?
尽管您可能不想保持大量缓冲区打开,但您可以将 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)
我已经使用这个技巧很多年了,它可以满足我 99% 的文件切换需求。
除此之外,我使用M-x rgrep
,你可能还想看看M-x find-dired
and M-x find-grep-dired
.
如需更多选择,请查看以下问题的答案这个类似的问题 https://stackoverflow.com/questions/2375738/emacs-recursive-project-search.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)