завершение zsh :остановка завершения при использовании неправильной опции

Попробуйте просто сказать первому хосту выполнить команду sshвместо того, чтобы давать вам оболочку:

ssh -t -i private_key.pem ec2-user@ec2-11-11-111-11.us-west-2.compute.amazonaws.com ssh -t second_aws
1
20.08.2021, 07:51
1 ответ

С помощью этого кода я не могу воспроизвести описанное вами поведение. После foo -c , если я нажму вкладку , предлагаемые дополнения - это каталоги.

Обратите внимание, что когда вы используете состояния с _arguments, вы должны объявить используемые им переменные как локальные переменные в функции. Я не думаю, что в этом простом случае это имеет значение, если нет глобальных переменных с таким же именем.


Я не думаю, что есть способ указать поведение для всех аргументов, начинающихся с -. Чтобы отключить завершение, если есть нераспознанный параметр, я не могу придумать лучшего способа, чем перебирать аргументы, то есть элементыwordsмежду 1 (именем команды, эксклюзивное )и$CURRENT(слово завершается, исключительный ).

local context state state_descr line
typeset -A opt_args

 _arguments : \
  '-l' \
  '*: :->directory'

 local i
 for ((i = 2; i < CURRENT; i++)); do
   if [[ $words[$i] = -* && $words[$i] != -l ]]; then
     state=nothing
     break
   fi
 done

 case $state in
   directory)
     _directories -W /usr
   ;;
 esac
1
20.08.2021, 21:20

Теги

Похожие вопросы