动态更新zsh中的完成列表

F30*_*F30 14 zsh autocomplete

我发现 zsh 的Tab完成结果列表非常有用,但是我想稍微调整一下它们的行为:

它们应该在我Tab第一次出现时出现,然后随着每个新字母的添加而动态更新。默认行为是建议仅在您Tab再次评估时重新评估,我想保存此重复按键。(更新:但只列出可能的补全,即使只剩下一个选项,它也不应该自动修改我的实际提示行。)

有没有办法实现这种行为?

qbi*_*qbi 1

可能提供您想要的解决方案的一种方法是incremental-complete-word

zle -N incremental-complete-word
bindkey '^Xi' incremental-complete-word
Run Code Online (Sandbox Code Playgroud)

这会加载该函数并将其绑定到Ctrl- X i。现在你可以尝试一下:

> k^Xi
incremental (complete): -no prefix-
Run Code Online (Sandbox Code Playgroud)

k在此示例中,先键入字母,然后键入 Control-X i。

> kil
incremental (complete): kill       
Run Code Online (Sandbox Code Playgroud)

我输入后il,现在有一种可能的补全 ( kill)。人们可以接受这一点并按回车键。

> kill^D
incremental (complete): -no prefix-
- external command -
kill      killall   killall5
Run Code Online (Sandbox Code Playgroud)

通过输入Ctrl- Dzsh 会显示可能的完成情况。

zshcontrib(1)

incremental-complete-word
这允许增量完成一个单词。启动此命令后,您键入的每个字符后都会显示补全选项列表,您可以使用^H或删除它DEL。按回车键接受到目前为止的完成并返回到正常编辑(即,命令行不会立即执行)。您可以点击TAB以正常完成、 ^G 中止回到开始时的状态以及^D列出匹配项。