2011-08-13 90 views
3

我想從用戶讀取一個字符串(使用read內置或類似的方法),並且啓用所有完成以使用正常的shell。換句話說,我希望ZSH完成所有的命令,但在按下ENTER之後,我不想讓ZSH執行命令,而是將字符串傳遞給我的腳本。我怎樣才能做到這一點?使用ZSH完成讀取字符串

回答

3

要讀取版本和完成行,請致電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 "[email protected]" 
} 
foo='default text' 
vared foo 
+0

謝謝,效果很好。 – Arnowy