2013-09-10 2 views
25

Я установил Cygwin на окна, а один из пакетов по умолчанию - завершение закладки git, но у меня нет завершения табуляции.Завершение вкладок Cygwin git

Я сделал несколько поисков и нашел заметку о том, что она не включена по умолчанию. Я скопировал skel .bashrc and .bash_profile to ~ and in .bashrc Я расколол строки для завершения, а затем перезапустил консоль. Еще ничего.

Тогда я заметил, что файл .bash_completion отсутствовал в /etc, поэтому я нашел копию этого онлайн и вставил его на место, но у меня все еще нет завершения в git.

Похоже, что в нем должен быть каталог /etc/bash_completion.d с git/, но у меня его тоже нет.

+3

Существует поток на stackoverflow, который похож на этот. http://stackoverflow.com/questions/11173447/git-bash-completion-on-debian – shakthydoss

ответ

6

В моей .bashrc

for file in /etc/bash_completion.d/* ; do 
    source "$file" 
done 
+3

Попробуйте источник /etc/bash_completion.d/git, он должен включить его в текущей оболочке. Если это так, проверьте свои скрипты инициализации bash –

+0

Опять же, у меня нет /etc/bash_completion.d Я следил за приведенной выше ссылкой и сделал то, что сказал комментарий 11 Поместите следующие строки в ваш ~/.bashrc если [-f/etc/bash_completion]; затем ./etc/bash_completion fi Скрипт/программа/etc/bash_completion уже включает скрипты в /etc/bash_completion.d, а также определяет некоторые функции, необходимые для включенных скриптов. По-прежнему нет автозаполнения в git. Я все еще недоумеваю, как cygwin может показать, что он включает в себя git autocomplete, но после установки нет файла/etc/bash_completion или каталога /etc/bashcompletion.d. – Ayen

+0

Ответ Sesm - единственный, который работает в 2015 году. Этот конкретный ответ просто ввернут мой терминал. –

8

Ответ выше печатает bash: have: command not found почти каждый сценарий в bash_completion.d /. This answer из связанного поста решает это для меня:

if [ -f /etc/bash_completion ]; then . /etc/bash_completion fi

Скрипт/программа/и т.д./bash_completion уже включает сценарии в /etc/bash_completion.d, а также определяет некоторые функции, необходимые встроенных скриптов ,

Однако будьте осторожны, что это замедлит загрузку вашей оболочки, особенно в Cygwin (замедление до 1 секунды загрузки для меня). Чтобы смягчить это, вы можете переименовать все в /etc/bash_completion.d/ до *.bak, а затем удалить из команды, которые вам действительно интересны (благодаря Slow load time of bash in cygwin).

Update: Файл /etc/bash_completion волшебно исчез (похоже, что это было связано с обновлением пакета Баш-завершения в 2.1-1). В качестве быстрого решения я создал символическую ссылку в/etc до /usr/share/bash-completion/bash_completion.

Update 2: Перечитывая оригинальный вопрос, вопрос с не имея /etc/bash_completion.d каталог может быть связано с не установкой пакета «Баш-завершения» в Cygwin.

+1

Ответ Sesm - единственный, который работает в 2015 году. –

40

Обновлено 2016: Установить пакет bash-completion.

+6

Это единственный рабочий ответ от 2015 года. –

+0

Из примера установки: Пакет завершения git устарел. Выбор этого пакета для установки приведет к замене пакета git, который заменяет этот, вместо этого. – kasi

+1

Это самый простой способ установить его с мая 2016 года! –

3

Чтобы установить «ГИТ-завершающего» пакет бега от cmd.exe:

cyg-get git-completion 

Вам не нужно изменить ваш .bashrc после этого.

2

С мая 2016 года я смог получить git & Завершение работы svn tab, просто установив пакет завершения bash с помощью утилиты настройки Cygwin (v2.874), найденной здесь: https://www.cygwin.com/install.html. Обязательно выберите опцию «Установить из Интернета». Пакет завершения bash указан в категории «Корпуса».

+0

В cygwin просто введите: 'pact install bash-completion' – kasi

+0

' -bash: pact: command not found' –

+0

@kasi Я думаю, что 'pact' поставляется с _Babun_, а не просто _Cygwin_ – houen

2

Я наткнулся на ту же проблему несколько дней назад, и установки bash-completion было недостаточно.

Проблема была решена в моем случае загрузки https://github.com/git/git/blob/master/contrib/completion/git-completion.bash и скопировать его в /etc/bash_completion.d/

Смотрите также: https://git-scm.com/book/en/v1/Git-Basics-Tips-and-Tricks

+0

Это сработало для меня (' cygwin' with Git для Windows вместо родной cygwin). Однако производительность неприемлема, и каждое завершение «промаха» занимает> 30 секунд. –

0

я должен был установить следующие Cygwin пакеты:

  • bash-completion
  • bash-completion-devel
Смежные вопросы