2016-06-10 10 views
1

Я работаю над портированием функции автозавершения командной строки Google Cloud SDK для рыбной оболочки. Когда у меня есть однозначный ответ с несколькими аргументами:Включить возврат нескольких аргументов в качестве ответа на завершение сразу в оболочке рыбы

A) Любая команда завершена со всеми этими аргументами. BUT пробелы становятся экранированными (\), когда я указываю вызов функции в полной команде внутри '' s или '' s , например:> complete ... -a '(__fun)'

B), или если я этого не делаю (просто: -a (__fun)), тогда только первый аргумент ответа попадает в завершение и все остальные аргументы «теряются»

Возможно ли ответить сразу несколькими аргументами при завершении рыбы?

+1

Завершение работы с рыбой только расширяется до одного аргумента. Для моей собственной информации, в каком случае вы хотели бы вставить сразу несколько аргументов? –

+0

. когда вы хотите использовать «gcloud compute ssh», sdk может завершить его как с именем экземпляра - zone, так и с зоной, что очень полезно. –

ответ

0

Может быть сделано несколькими способами. Вам придется немного взломать его, поскольку, поскольку ridiculous_fish говорит, что он не предназначен для этого. Проще всего было бы отправить вашу собственную функцию-обертку, которая может вывести экранированный вывод и передать его так, как это работает. Не очень красиво, однако, и будет завинчиваться с автозапуском, если вы не вернетесь и не измените строки истории.

Вот что-то полу-хаки/полу-элегантное Я бы предложил: Если вы искали «последовательность» аргументов, которые вы хотели бы выполнить сразу, при первом вызове поместите завершающие аргументы в качестве описания для первый. После того, как он был заблокирован, удалите все остальные параметры, кроме первого в этой «очереди описания», продолжите его, и это будет просто быстрое нажатие вкладки tab-tab-tab-tab.

Завершения не должны быть идеальными, они в основном помогают справиться с лиллом, пока у вас не будет достаточного количества строк истории, которые захватят самовнушение, imo.

+0

Я не мог понять это. Поскольку я звоню, соревнуйтесь как: –

+0

complete -x -c gcloud -a '(__python_argcomplete)' –

+0

Прямо сейчас я возвращаю параметры внутри моей функции __python_argcomplete с эхо-сигналом их по одному. Согласно документам о рыбе, я мог бы дать описание внутри полного вызова с -d 'description'. Но это вне вызова функции, и поскольку я могу испускать несколько опций внутри, каждый из них должен иметь свое индивидуальное описание. Я что-то упускаю? –

 Смежные вопросы

  • Нет связанных вопросов^_^