在zsh中动态更新完成列表


13

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

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

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


您可以深入了解定制zsh的行为。到底应该发生什么?目前,这个问题看起来像是您希望在初始TAB之后的每次按键时都列出选择,但是实际上并没有完成任何事情。每个按键的行为都应该像是在TAB之后一样吗?请记住,这对于意外完成而言意味着很多退步。
peth 2012年

@ user112553第一个选项:从这个意义上讲,它实际上不应表现为重复的TAB。我只希望建议列表动态调整。
F30 2012年

Answers:


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)。一个人可以接受,然后按Enter键。

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

通过键入Ctrl- Dzsh的显示可能的补全。

来自zshcontrib(1)

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.