使用ZSH完成读取字符串

时间:2011-08-13 17:30:06

标签: shell zsh

我想从用户读取一个字符串(使用read内置或类似的东西),所有完成都启用了正常的shell使用。换句话说,我希望ZSH完成所有命令,但在按ENTER后我不希望ZSH执行命令,而是将字符串传递给我的脚本。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:4)

要阅读包含版本和完成版的专线,请拨打vared builtin

foo='default text'
vared foo

完成将像在参数分配的值部分一样工作(因为这是vared所做的)。如果你想像普通的命令行一样完成,我认为你需要摆弄_complete,让它忘记在vared内。

zmodload zsh/parameter
autoload +X _complete
functions[_original_complete]=$functions[_complete]
_complete () {
  unset 'compstate[vared]'
  _original_complete "$@"
}
foo='default text'
vared foo