Автозаполнение Git's tab полезно для небольших проектов, но в настоящее время я работаю над двумя большими проектами, которые используют git, и для них это хуже, чем бесполезно. Всякий раз, когда я печатаю, скажем, git add forms<tab>
, git занимает 20 секунд или больше, чтобы найти файл (в этом примере, forms.py), и в этот промежуток времени я не могу ничего сделать в терминале. Есть ли способ отключить функцию автозаполнения или каким-то образом сделать это быстрее?Завершение автозавершения ZSH для git занимает значительное количество времени, могу ли я отключить его или оптимизировать?
ответ
Это не git auto, заполняющий имена файлов, это ваша оболочка. У вас такая же задержка, когда вы делаете, например. «Кошачьи формы < tab>»?
Заканчивать этот пост с подобными проблемами:
http://talkings.org/post/5236392664/zsh-and-slow-git-completion
Это сообщение предлагает добавить следующие строки в .zshrc:
__git_files() {
_wanted files expl 'local files' _files
}
EDIT: Вот оригинальный текст этого поста
Я нашел много сообщений, касающихся жалоб о том, насколько болезненно медленным gi t автозаполнение может быть в больших хранилищах. Были различные предлагаемые исправления и предложения для загрузки последних zsh. Может быть, один из них будет работать, но все, что я действительно хочу, - это , чтобы заполнить имена ветвей и файлов, как они есть в файле . Я не нашел никаких предложений о том, как получить такое поведение. Я понял это для себя. Я думал, что поделюсь этим для всех , которые могут извлечь из этого выгоду. Я просто добавил следующее в мой файл .zshrc :
__git_files() { _wanted files expl 'local files' _files }
Теперь я могу запускать команды Git и получить почти мгновенное завершение пока еще получения завершения файла аналогично тому, что Ls обеспечит.
Это происходит мгновенно. – haroba
Если я добавлю файл в .gitignore, завершение вкладки после того, как команда git больше не работает с этим файлом. – haroba
Хорошо. Пожалуйста, проверьте мой пересмотренный ответ. Вероятно, это связано с сообщением между вашей оболочкой и git. – ralphtheninja
Одно очень быстрое и грязное решение - удалить следующий файл, отвечающий за автозаполнение.
/usr/local/git/contrib/completion/git-completion.bash
Я не могу этого сделать, поскольку я не единственный пользователь на этом сервере, а другие могут или могут не хотят использовать git autocompletion. Кажется странным, что git не будет легко исправить что-то, что, если я что-то не понимаю, происходит со всеми git-проектами, когда они становятся большими. – haroba
@Aqwis: Не используйте этот файл в сценарии запуска оболочки. – mipadi
Это не источник в сценарии запуска оболочки. – haroba
У меня нет опыта работы с zshell, но я получил этот ответ на другом форуме. Вы должны включить эту строку в файл .zshrc:
compdef -d git
К сожалению, это приводит к сбою завершения команд git. Например, если вы наберете 'git ch
Со многими командами git первым аргументом может быть либо ветка, либо имя файла. Иногда вы хотите заполнить имя файла (это всегда должно быть очень быстро), а затем вам нужно подождать очень долгое время, просматривая все ветви, которые вам не нужны. Отключение выполнения git устраняет эту частую проблему. – MarcH
Наконец надоела ужасно медленным автозавершения в zshell и начиная ищет решение. Я в конечном итоге переход от «мерзавца» с помощью «gitfast» плагина, который уже установлен в/о моем ЗШЕ и лечит ... https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins#gitfast
Согласно ответу на git bash auto complete slow on windows 7 x64, мерзавец 2.13 поставляется с более быстрым git-completion.bash
Какую ** оболочку ** вы используете? – Johnsyweb
Я использую zsh, и я бы хотел использовать стандартное автозаполнение zsh, а не git's. – haroba
Кстати, 'set -x' достаточно, чтобы увидеть/доказать, что автозаполнение занимает слишком много времени. – MarcH