【技巧分享】 vertico 取消候选并保留已输入的字符

M-RET 即调用 vertico-exit-input 函数退出候选,ivy 对应的函数是 ivy- immediate-done。

用途:

org-roam-node-find 的时候有时想创建新 node,但有类似名称的 completion 候选,这时就需要退出筛选状态,将已输入的字符作为结果。

也可以用在 find-file 中创建新文件而不是打开候选文件列表中的预选项。

碎碎念

vertico 作者回复 issue 挺快,但也只是说了句去读 readme,我是从 Stack Exchange 找到的正确答案。

还是问答社区比较接地气说人话,readme 里的什么 finish the loop 看得我一头雾水,摆在眼前都不知道这些快捷键、函数是用在什么场景下的。

3 个赞

是这样子的,看文档也没用,比如 corfu-completecorfu-insert 这两个的区别我是真的没看明白。

所以,正确答案到底是?

按 C-p 到你输入那里直接 enter 就可以了,难道不是很符合直觉吗

Emacs可以直接查看源码呀,这种细微差别直接看源码最靠谱。

第一行就是正确答案啊。

对,我也是一直这么操作的

vertico 与 orderless 一起用的时候,出来的补全会模糊匹配选项,然而,有些情况需要退出自动的匹配,进行强行输入,比如备份某个文件重命名,需要执行vertico-exit-input,即按相应的绑定键 M-RET.

这就是我讨论的点,看官方文档愣是没看懂,Stack Exchange 上的回答让我明白了我要调用的是哪个函数。