Zsh在引号内完成

时间:2013-08-08 12:27:58

标签: autocomplete zsh

这是我的完成功能:

f()
{    
    reply=('ok')
}
compctl -K f c

然后我做

c

标签

c ok

有些东西有效。然后我在b

之后执行 tab
c ok "a b"

没有任何反应。我希望将a b替换为ok(就像在bash中一样)。

我怎么能实现它?

我真的需要在引号内做完成。我的程序的典型启动如下所示:c 'a, &b, c[d]' 'a < 1 and b == "2013"'

1 个答案:

答案 0 :(得分:0)

这与引号的使用无关。在第二种情况下,zsh不提供ok作为完成,因为它不会接近已为该参数输入的内容。 c a之后也不会提供完成。

zsh通常假定要完成的内容与已经输入的内容有些相关,从而使完成函数的作者无需检查匹配。您可以在compctl命令中添加-U选项,告诉它应该使用整个$reply列表,甚至是不匹配的条目。

我还应该注意compctl属于旧的zsh完成系统。新的完成系统在zshcompsys manpage

中描述