Anything

使用filecache可以快速打开项目里的某个文件,但是它的文件名补全功能有一个小小的局限,就是必须从头开始匹配,不像iswitchb那样可以匹配buffer名的任意部分。配合使用Anything可以解决这个问题。

Anything不仅仅可以配合filecache使用,之所以叫Anything,就是因为它可以快速打开anything,而且高度可配置、可扩展。在Anything模式下有几个快捷键,左右方向键在不同分类之间切换;C-nC-p在不同条目之间切换;C-vM-v上下翻页。下面是我的配置,使用F9作为快捷键启动Anything模式。

(require 'anything)
(require 'anything-config)
(add-to-list 'anything-sources anything-c-source-file-cache)
(setq anything-enable-digit-shortcuts t)
(global-set-key (kbd "<f9>") 'anything)

filecache

看同事使用source insight,只需输入文件名,source insight便可以找到并显示这个文件。看了sacha的Eclipse to Emacs: Navigating your source tree才知道在Emacs里面可以使用filecache达到相同的效果,如果搭配上ido,还会更加强大。也许是时候从iswitchb转到ido了。

下面是我的配置(忽略git相关目录及文件):

(require 'filecache)
(add-to-list 'file-cache-filter-regexps "\.git\>")
(file-cache-add-directory-recursively "/path/to/project")

filecache没有文档,只能看源文件头上的注释,不过已经足够了,本来也不是很复杂的东西。使用时有一个小窍门,在使用C-x C-f打开文件时,不用管前面的目录名是什么,直接在后面输入文件名,然后用C-TAB补全,目录名会自动被替换,无需手工删除。