dired find-file 输入缩写打开对应的文件/目录,是如何实现的?

视频中,Prot 要打开的路径是 ~/.local/share/fonts,他可以通过输入 ~/.l/s/f 这样的简写去到这个目录。

视频中也没有讲到需要配置什么,我自己尝试了一下,我必须要输入完整的路径才行,没办法像他这样只输入一个字符作为路径的一部份。

这是用什么 package 实现的吗?还是 dired 内置的功能?需要配置什么才能实现呢?

我很确信这是默认的效果,emacs -nw -q C-x C-f 可以复现如下

-UUU:%%- F1  *GNU Emacs*     All   L1     (Fundamental) -----------------------------------------------------------------------------------------------
Find file: ~/.l/s/d

Tab →

Find file: ~/.local/share/doc/
1 个赞

Thanks,我再试试,昨晚我试过 emacs -q 但好像也不行 :smiling_face_with_tear:

是内置的,用emacs自带的文件名补全,支持前缀后缀匹配,find-file只要以“/”为分隔符逐级过滤就行了。

https://www.gnu.org/software/emacs/manual/html_node/elisp/File-Name-Completion.html

1 个赞

Thanks :slight_smile:

使用 emacs -q, 安装 vertico 就能达到视频中的效果了,挺方便的。

估计是我自己的配置存在一些问题,后续排查到我再更新一下。

其实vertico也不用,用自带的fido-vertical-mode就行

诶不对fido是loop不支持展开

cape-dabbrev补全也许可以做到同等效果,具体行不行我忘了

hhh,我觉得 vertico 的效果不错,不追求一定都用自带的功能。

定位了一下问题,原因是我用的配置中,禁用了目录的补全 = =

重新覆盖一下就好了:

(setq completion-category-overrides '((file (styles basic partial-completion))))

学到了,原来还可以这么用,感谢分享