Автозаполнение вкладок Git полезно для небольших проектов, но в настоящее время я работаю над двумя большими проектами, использующими git, и для них это хуже, чем бесполезно. Всякий раз, когда я набираю, скажем, git add forms<tab>
, git требуется 20 или более секунд, чтобы найти файл (в данном примере, forms.py), и в этот промежуток времени я больше ничего не могу сделать в терминале. Есть ли способ отключить функцию автозаполнения или как-то ускорить ее?
Автодополнение ZSH для git занимает много времени, могу ли я отключить или оптимизировать его?
Ответы (6)
Это не git автоматически заполняет имена файлов, это ваша оболочка. У вас такая же задержка при выполнении, например. "формы кошек‹ вкладка >"?
Проверьте этот пост с похожими проблемами:
http://talkings.org/post/5236392664/zsh-and-slow-git-completion
В этом посте предлагается добавить следующее в ваш .zshrc:
__git_files () {
_wanted files expl 'local files' _files
}
РЕДАКТИРОВАТЬ: Вот оригинальный текст этого поста
Я нашел много сообщений с жалобами на мучительно медленное автозаполнение git в больших репозиториях. Были предложены различные исправления и предложения по загрузке последней версии zsh. Возможно, одна из этих вещей сработает, но все, что я действительно хочу, это чтобы имена ветвей и файлов завершались так, как они есть в файловой системе. Я не нашел никаких предложений о том, как получить такое поведение, поэтому я понял это для себя. Я подумал, что поделюсь этим со всеми, кому это может быть полезно. Я только что добавил следующее в свой файл .zshrc:
__git_files () { _wanted files expl 'local files' _files }
Теперь я могу запускать команды git и получать почти мгновенное завершение, в то же время получая завершение файла, аналогичное тому, что обеспечивает ls.
Наконец-то надоело ужасно медленное автодополнение в zshell, и я начал искать решение. В итоге я переключился с «git» на использование плагина «gitfast», который уже установлен с моим zsh, и я лечу... https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins#gitfast
У меня нет опыта работы с zshell, но я получил этот ответ на другом форуме. Вам нужно включить эту строку в ваш файл .zshrc:
compdef -d git
git ch<TAB>
, он не выдаст список допустимых команд git.
- person amcnabb; 22.03.2012
Это связано с тем, что Zsh по умолчанию поставляется с чрезвычайно раздутым завершением для Git. Я написал сообщение в блоге объясняя, как я исправил это раздутие, но это должно было быть вне проекта Zsh.
Простой ответ — установить дополнение Git zsh, которое отличается от завершения git Zsh (которое поставляется по умолчанию). Загрузите git-completion.zsh и поместите его в свой ~/.zsh/_git
. Затем поместите его на свой fpath:
fpath=(~/.zsh $fpath)
Ты должен лететь сейчас.
Как объясняет другой комментарий здесь; другой вариант — использовать oh-my-sh и включить gitfast, который делает то же самое.
Почему разработчики Zsh настаивают на том, чтобы сделать их код медленным? Я не знаю, но здесь вы можете увидеть образец их рассуждений: Re : проблема с медлительностью при завершении git.
Одно очень быстрое и грязное решение — удалить следующий файл, отвечающий за автозаполнение.
/usr/local/git/contrib/completion/git-completion.bash
Согласно ответу на git bash auto complete slow на Windows 7 x64, git 2.13 поставляется с более быстрым git-completion.bash
set -x
достаточно, чтобы увидеть/доказать, какое автодополнение занимает слишком много времени. - person MarcH   schedule 03.10.2017git-completion.bash
:bash/zsh completion support for core Git
- person MarcH   schedule 03.10.2017