псевдоним g = 'git' и завершение bash все еще работает

Для псевдонима самого git, например. alias g=git, здесь вам будет легче найти ответ.

Для псевдонимов подкоманд git, например. alias gco = "git checkout", посмотрите здесь.


Я набираю git слишком часто, поэтому присвоил ему псевдоним:

alias g='git'

Однако сейчас я не могу:

g com вкладка

и пусть завершение подарит мне:

g commit

Как мне снова запустить завершение?


Повторяющаяся дифференциация

В этом мета-ответе «равный первый» предлагается сохранить конкретный случай со ссылкой на более общий вопрос. Я добавил ссылку на более общий случай в это редактирование.

Заданный повторяющийся вопрос является более общим - но в основном касается псевдонимов git подкоманд, а не псевдонима самого git.

Этот вопрос касается конкретного случая, когда псевдонимом является сам git.

В отмеченном дубликате на случай git -self дан ответ только в 4-м показанном ответе и в комментарии к первому указанному ответу. Прочитать еще один комментарий необходимо для второй части головоломки (источник /usr/share/bash-completion/completions/git), чтобы заставить ее работать с помощью этого метода.

Обращаясь к ссылкам в комментариях ниже:

  • Ссылка @ewcz отмечена как дубликат и уже адресована
  • Remy J's links
    1. This is question as asked (and answered) is also about git subcommands
    2. Это еще более общий вопрос о псевдонимах, отличных от git, который в данном случае не является лучшим решением.
    3. Это то же самое, что и ссылка @ ewcz (уже адресованная)

person Tom Hale    schedule 15.09.2016    source источник
comment
Я бегу GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)   -  person Tom Hale    schedule 15.09.2016
comment
stackoverflow.com/questions/342969/?   -  person ewcz    schedule 15.09.2016


Ответы (2)


В конце вашего .bashrc добавьте:

_xfunc git __git_complete g _git

Если вы видите bash: _xfunc: command not found, используйте более длинную форму:

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

Перезагрузить bash

exec bash

(Этот ответ был вдохновлен ответом kub1x и комментарии к вопросу о завершение псевдонимов подкоманд git)

person Tom Hale    schedule 15.09.2016

Добавьте в файл .bashrc следующее:

source /usr/share/bash-completion/completions/git
complete -o default -o nospace -F _git g
person Marcelo Ávila de Oliveira    schedule 15.09.2016