我们有一个大型项目,无论出于何种原因,它都有许多嵌套目录,这些目录中通常只有一个嵌套子目录,例如
perl-thing/lib/PACKAGE/SUBPACKAGE/X.txt
在终端中,很容易浏览这个,因为我只是点击了很多次,最终它自动完成到X.txt,因为它是SUBPACKAGE中唯一的对象。
在Emacs中,使用find-file,我必须点击p然后选项卡来获取perl-thing,然后是l-tab for lib,P-tab for PACKAGE等,这会减慢到X.txt的速度。这似乎是由于查找文件列表./和../可能与单独的子目录一起完成。
是否可以删除./和../完成候选项,以便我可以使用选项卡快速浏览目录列表结构?或者我应该使用find-file以外的东西吗?
答案 0 :(得分:1)
您可以使用自己编写的read-file-name
- 函数忽略./
和../
并将其设置为默认值,如下所示:
(defun read-file-name-nodots (prompt &optional dir default-filename mustmatch initial predicate)
"Like read-file-name-default but does not complete on ./ and ../"
(let ((predicate (or predicate (lambda (f) (not (or (string= f "./") (string= f "../")))))))
(read-file-name-default prompt dir default-filename mustmatch initial predicate)))
(setq read-file-name-function 'read-file-name-nodots)