Orderless加载后无法新建同名不同类型文件

遇到的问题:

添加了Orderless插件之后,minibuffer下建立新的文件时,如果已经存在一个同名称不同文件类型文件,是没法建立新文件的.

举例:

code目录下有一个ex1.c文件,这时候我想新建一个ex1.h文件,C-x C-f输入ex1.h然后回车,并不会新建ex1.h出来,而是直接跳转到ex1.c

相关配置:

(use-package orderless
             :init (icomplete-mode)
             :custom
             (completion-styles '(orderless basic))
             (completion-category-overrides '((file (styles basic partial-completion)))))

如何解决?

C-j 替代回车试试

不管用,如果C-j会报Symbol’s function defination is void:nil 的错误

补充一份vertico的配置,可能问题在这,各位有需要后面我陆续补充其他代码:

(use-package vertico
             :hook (after-init . vertico-mode)
             :custom
             (vertico-sort-function nil)
             :config
             (vertico-mode)

             (setq vertico-resize nil
                   vertico-count 10
                   vertico-cycle t)

             (require 'vertico-repeat)
             (add-hook 'minibuffer-setup-hook #'vertico-repeat-save)

             (require 'vertico-directory)
             (add-hook 'rfn-eshadow-update-overlay-hook #'vertico-directory-tidy)
             )

好像按 Alt-enter 就可以了,之前遇到过

你遇到的问题是因为vertico默认选择了第一个补全候选,因为是补全候选肯定是已经存在的文件,解决办法是用 vercito-previous命令选择你实际输入的值,然后再回车就行了

这个方案可以,考虑一下绑定键位到回车,得想想了

但是新建文件的时候,不能再输入额外的命令了吧?要不考虑一下加改什么配置?

新建文件的时候可以输入额外的命令,你甚至M-x vercito-previous都可以,不过我记得 vercito-previous默认是绑定到了C-p,也就是你输入完文件名之后C-p一下然后回车就行了

试了一下C-p,会报Error in pre-command-hook,我最近先用M-回车了

可能会涉及其他在minibuffer补全的配置会影响这个,我先考虑一下再传一下代码片段大家看看吧

(vertico-exit-input)

应该是这个了,但只能M-RET,不能写进自己的配置的,先凑合用吧

还有一个可能的方案是(setq vertico-preselect 'prompt)让vertico默认选择prompt

1 个赞

这个好,目前可以采用了