Как псевдоним «git» на «g», чтобы правила заполнения баха сохранялись?

Я создаю сценарий оболочки, который делает то, что вам нужно, т.е. проверяет подключение к сети, а затем отключает обновления. Затем вызовите скрипт из cron.

23
задан 19 September 2011 в 18:02

62 ответа

Сначала найдите исходную команду завершения. Пример:

$ complete | grep git complete -o bashdefault -o default -o nospace -F __git_wrap__git_main git

Теперь добавьте их в свой сценарий запуска (например, ~ / .bashrc):

# copy the original statement, but replace the last command (git) with your alias (g) complete -o bashdefault -o default -o nospace -F __git_wrap__git_main g # load dynamically loaded completion functions (may not be required) _completion_loader git

Возможно, строка _completion_loader не требуется. Но для некоторых ситуаций функция завершения загружается динамически только после ввода команды и нажатия TAB в первый раз. Поэтому, если вы не использовали исходную команду и попробуйте псевдоним + TAB, вы можете получить сообщение об ошибке «bash: completion: function not found».

1
ответ дан 10 August 2018 в 09:14

Последнее обновление bash-upstream перемещено и немного переименовано. Теперь это:

source /usr/share/bash-completion/completions/git __git_complete g __git_main

Используйте это в последних версиях Ubuntu (например, 14.04, также Fedora 22+), когда вы сталкиваетесь:

completion: function `_git' not found

во время завершения.

14
ответ дан 10 August 2018 в 09:14
  • 1
    Похоже, это единственный правильный ответ. – pjvandehaar 3 November 2015 в 10:17
  • 2
    Используйте __git_complete gc _git_checkout (или аналогичный) для настройки завершений для более конкретных псевдонимов. Найдите /usr/.../git, как указано выше, чтобы найти правильное имя. – Max Wallace 6 November 2015 в 22:00
  • 3
    @MaxWallace - когда вы устанавливаете псевдонимы для определенных git-методов в .gitconfig (например, gc = checkout), нет необходимости явно настраивать их для завершения. – Piotr Aleksander Chmielowski 22 October 2016 в 10:43
  • 4
    @PiotrAleksanderChmielowski Спасибо! Но я не думаю, что это работает для псевдонимов bash верхнего уровня (например, gc = & gt; git checkout), в отличие от псевдонимов c - checkout в git, и говоря git c. Поправьте меня если я ошибаюсь. – Max Wallace 24 October 2016 в 15:33
  • 5
    @MaxWallace Да, вы правы, моя ошибка ;) – Piotr Aleksander Chmielowski 24 October 2016 в 18:39

Другие вопросы по тегам:

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