Читать строку с дополнениями ZSH - PullRequest
4 голосов
/ 13 августа 2011

Я хочу прочитать строку от пользователя (используя read встроенный или что-то подобное), со всеми дополнениями, включенными для обычного использования оболочки. Другими словами, я хочу, чтобы ZSH выполнил все команды, но после нажатия ENTER я не хочу, чтобы ZSH выполнил команду, а передал строку в мой скрипт. Как мне этого добиться?

1 Ответ

4 голосов
/ 14 августа 2011

Чтобы прочитать строку с выпуском и завершением, вызовите vared встроенный .

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
...