Я также хочу, чтобы получить его на работу, и я сделал некоторый прогресс, но он не идеален.
Прежде всего, я смотрю некоторые советы от here, которые помогают показать, как эмулировать переменные среды bash, которые ожидает as_completer.
Собирает вместе, я получаю это:
complete -c aws -f -a '(begin; set -lx COMP_SHELL fish; set -lx COMP_LINE (commandline); /usr/local/bin/aws_completer; end)'
Это в основном работает, но я получаю паразитный дополнительный слэш, так что если я пытаюсь выполнить «AWS EC2 описывает-экземпляры -» я получаю:
[email protected] ~> aws ec2 describe-instances --
--ca-bundle\ --color\ --filters\ --no-dry-run\ --output\ --region\
--cli-connect-timeout\ --debug\ --generate-cli-skeleton --no-paginate\ --page-size\ --starting-token\
--cli-input-json\ --dry-run\ --instance-ids\ --no-sign-request\ --profile\ --version\
--cli-read-timeout\ --endpoint-url\ --max-items\ --no-verify-ssl\ --query\
Он смотрит на меня, как есть конечные пробелы голец, но я попытался удалить его с помощью СЭД:
complete -c aws -f -a '(begin; set -lx COMP_SHELL fish; set -lx COMP_LINE (commandline); echo (/usr/local/bin/aws_completer | sed -e \'s/[ ]*//\') ; end)'
Но это, похоже, не помогает. Кажется, что рыба ожидает другого выходного формата, чем bash, потому что он является полным. И действительно, doe говорит, что он ожидает список, разделенный пробелом.
Так что я попытался присоединиться к линии с xargs:
complete -c aws -f -a '(begin; set -lx COMP_SHELL fish; set -lx COMP_LINE (commandline); echo (/usr/local/bin/aws_completer | sed -e \'s/[ ]*//\') | xargs echo ; end)'
Но это не работает. Я просто получаю одно завершение
Это раздражает, я так близко, но это не сработает!
Рыба поддерживает доработки, используя свой собственный ['complete'] (http://fishshell.com/docs/current/commands.html#complete). Подробнее об этом читайте в [Написание собственных доработок] (http://fishshell.com/docs/current/index.html#completion -own). Я не настраиваю AWS CLI на Fish, но для [look of it] (http://docs.aws.amazon.com/cli/latest/userguide/cli-command-completion.html) вам нужно будет написать ваш собственный файл завершения. См. [Здесь] (https://github.com/bpinto/oh-my-fish/blob/master/plugins/git-flow/completions/git.fish) для примера о том, как писать доработки. –