动态更新zsh中的完成列表

动态更新zsh中的完成列表

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

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

有什么办法可以实现这种行为吗?

答案1

我创建了一个插件,它完全可以满足您的要求:https://github.com/marlonrichert/zsh-autocomplete

当您键入时,它会自动列出完成选项,无需插入它们,也无需按任何其他键盘快捷键。无需按 ctrl-x+i 或 ctrl-d 或类似的键。只要屏幕适合,它就会始终自动列出所有内容。

然后,按 Tab 插入顶部匹配或按 Down 开始菜单选择。

您可以观看上面页面上的演示,看看它是否是您想要的。

答案2

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

zle -N incremental-complete-word
bindkey '^Xi' incremental-complete-word

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

> k^Xi
incremental (complete): -no prefix-

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

> kil
incremental (complete): kill       

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

> kill^D
incremental (complete): -no prefix-
- external command -
kill      killall   killall5

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

zshcontrib(1)

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

相关内容