3
我想從用戶讀取一個字符串(使用read
內置或類似的方法),並且啓用所有完成以使用正常的shell。換句話說,我希望ZSH完成所有的命令,但在按下ENTER之後,我不想讓ZSH執行命令,而是將字符串傳遞給我的腳本。我怎樣才能做到這一點?使用ZSH完成讀取字符串
我想從用戶讀取一個字符串(使用read
內置或類似的方法),並且啓用所有完成以使用正常的shell。換句話說,我希望ZSH完成所有的命令,但在按下ENTER之後,我不想讓ZSH執行命令,而是將字符串傳遞給我的腳本。我怎樣才能做到這一點?使用ZSH完成讀取字符串
要讀取版本和完成行,請致電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
謝謝,效果很好。 – Arnowy