Ответ 1
Из Bash FAQ E13.
Сразу после команды complete
в script, с которой вы связались, выполните эту команду, чтобы удалить двоеточие из списка символов разрыва слова завершения:
COMP_WORDBREAKS=${COMP_WORDBREAKS//:}
Я добавил bash завершение для Maven после документов:
http://maven.apache.org/guides/mini/guide-bash-m2-completion.html
Все работает хорошо, за исключением целей, которые используют двоеточие. Например, вместо
mvn eclipse:eclipse
завершение выполнения двоеточия
mvn eclipse\:eclipse
Любые предложения, как это можно исправить? Я использую Ubuntu 8.10 (2.6.27-17-generic) и
$bash -версия
GNU bash, версия 3.2.39 (1) -release (i486-pc-linux-gnu)
Из Bash FAQ E13.
Сразу после команды complete
в script, с которой вы связались, выполните эту команду, чтобы удалить двоеточие из списка символов разрыва слова завершения:
COMP_WORDBREAKS=${COMP_WORDBREAKS//:}
Вот связанный вопрос и другое предлагаемое решение:
Как reset COMP_WORDBREAKS без выполнения другого завершения script?
Как указывалось ранее, самым простым решением является изменение COMP_WORDBREAKS
. Однако изменение COMP_WORDBREAKS
в вашем завершении script небезопасно (поскольку это глобальная переменная и имеет побочный эффект, влияющий на поведение других скриптов завершения), например scp).
Следовательно, завершение bash предлагает некоторые вспомогательные методы, которые вы можете использовать для достижения своей цели лучше и безопаснее.
Два вспомогательных метода были добавлены в Bash завершение 1.2 для этого:
_get_comp_words_by_ref
с опцией -n EXCLUDE
__ltrim_colon_completions
Итак, вот основной пример того, как обрабатывать двоеточие (:) в словах завершения:
_mytool()
{
local cur
_get_comp_words_by_ref -n : cur
# my implementation here
__ltrim_colon_completions "$cur"
}
complete -F _mytool mytool
Использование вспомогательных методов также упрощает завершение script и гарантирует, что вы получите одинаковое поведение в любой среде (bash -3 или bash -4).
Вы также можете посмотреть сценарии завершения man
или perl
в /etc/bash_completion.d
, чтобы узнать, как они используют вышеупомянутые вспомогательные методы для решения этой проблемы.
Любые предложения, как это можно исправить? Я использую Ubuntu 8.10 (2.6.27-17-generic) и
Ответ Денниса определенно правильный.
Но для записи есть зарегистрированная проблема (MNG-3928), чтобы улучшить документацию об интеграции Maven с bash, Проблема связана с script, которая является улучшенной версией той, которая сейчас находится в сети, и просто работает. Возможно, вы захотите попробовать.
Лично я использую Bash Completion script от Ludovic Claude PPA (тот, который входит в пакет maven из Ubuntu), который я загружаю прямо с базара (ее e - прямая ссылка для скачивания в ревизию HEAD). Это просто потрясающе.
Я бы пошел с файл завершения Maven2 Bash на willcodeforbeer.com.
Надеюсь, что это поможет!