Почему "git ls-files" не отображается при завершении табуляции?

Недавно я нашел команду

git ls-files

и я считаю его очень полезным (см. его с опцией -h). Почему он не появляется, если я набираю git, а затем нажмите Tab?

Я имею в виду - где список "других" команд git?

3 ответа

git ls-files является командой сантехники, и многие из этих команд "скрыты" и справедливо. Со временем многие были добавлены к завершению bash, но многие по-прежнему "скрыты"


Посмотрите на функции ~/.git-completion.sh и __git_list_porcelain_commands(). Команды, которые git поддерживает, но не будут заполнены, перечислены там. Большинство этих команд являются так называемыми "сантехническими" командами, включая ls-files. Вы можете легко сделать их заполненными вкладками, комментируя соответствующую строку. Вот так:

#ls-files) : plumbing;;
#ls-remote) : plumbing;;
#ls-tree) : plumbing;;


При установке по умолчанию в завершении вкладки отображаются только имена команд, которые отображаются в /bin, /usr/bin и т.д. Файл /usr/bin/git ls-files отсутствует.

ls-files - это вспомогательная команда, которую вам нужно будет обучать вашей оболочке. Предполагая, что вы используете bash, вы можете запустить help complete, чтобы узнать, какие команды вы можете поместить в свой .bashrc.

Если ваш дистрибутив предоставляет пакет bash -completion, вы можете установить его, чтобы сэкономить много времени:

apt-get install bash-completion # on Debian/Ubuntu/etc.
yum install bash-completion # on Fedora/Red Hat/etc.

Но, как указывает manojlds, это не будет работать для менее используемых команд git, таких как ls-files, потому что bash -completion скрывает их от вас. Вам нужно будет отредактировать /etc/bash_completion.d/git, чтобы изменить это.

licensed under cc by-sa 3.0 with attribution.