Автоматическое завершение ZSH для git занимает значительное время, могу ли я его отключить или оптимизировать? - PullRequest
24 голосов
/ 21 марта 2012

Автозаполнение вкладок в Git полезно для небольших проектов, но в настоящее время я работаю над двумя большими проектами, которые используют git, и для них это хуже, чем бесполезно.Всякий раз, когда я набираю, скажем, git add forms<tab>, git требуется 20 секунд или больше, чтобы найти файл (в этом примере forms.py), и в этот промежуток времени я больше ничего не могу сделать в терминале.Есть ли способ отключить функцию автозаполнения или как-то сделать ее быстрее?

Ответы [ 6 ]

48 голосов
/ 21 марта 2012

Это не git, автозаполнение имен файлов, это ваша оболочка. Есть ли у вас такая же задержка при выполнении, например, "кошка формирует "?

Проверьте этот пост с похожими проблемами:

http://talkings.org/post/5236392664/zsh-and-slow-git-completion

В этом посте предлагается добавить следующее .zshrc:

__git_files () { 
    _wanted files expl 'local files' _files     
}

РЕДАКТИРОВАТЬ: Вот оригинальный текст этого поста

Я нашел много постов, касающихся жалоб на то, как мучительно медленно мерзавец Автозаполнение может быть в больших репозиториях. Были разные Предлагаемые патчи и предложения для загрузки последней Zsh. Может быть один из этих вещей будет работать, но все, что я действительно хочу, это чтобы заполните названия веток и файлов, как они есть в файле система. Я не нашел никаких предложений о том, как получить такое поведение так Я понял это для себя. Я думал, что поделюсь этим для всех кто может извлечь из этого выгоду. Я просто добавил следующее в мой .zshrc Файл:

__git_files () { 
    _wanted files expl 'local files' _files  }

Теперь я могу запускать команды git и получать почти мгновенное завершение, пока получить завершение файла аналогично тому, что предоставит ls.

7 голосов
/ 24 октября 2013

Наконец надоело ужасно медленное автозаполнение в zshell и начала искать решение.Я закончил тем, что переключился с 'git' на использование плагина 'gitfast', который уже установлен без моего zsh и я летаю ... https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins#gitfast

5 голосов
/ 21 марта 2012

У меня нет опыта работы с zshell, но я получил этот ответ на другом форуме.Вам необходимо включить эту строку в ваш файл .zshrc:

compdef -d git
1 голос
/ 06 июня 2019

Это потому, что Zsh по умолчанию поставляется с чрезвычайно раздутым завершением для Git. Я написал сообщение в блоге , объясняющее, как я исправил эту раздутость, но это должно было быть за пределами проекта Zsh.

Простой ответ - установить Gsh-завершение zsh, которое отличается от Zsh-завершения git (которое поставляется по умолчанию). Загрузите git-creation.zsh и поместите в свой ~/.zsh/_git. Затем поместите его на свой fpath:

fpath=(~/.zsh $fpath)

Вы должны лететь сейчас.

Как здесь объясняется другой комментарий; другой вариант - использовать oh-my-sh и включить плагин gitfast , который выполняет то же самое.

Почему разработчики Zsh настаивают на том, чтобы их код замедлялся? Я не знаю, но здесь вы можете увидеть пример их рассуждений: Re: Проблема медлительности с завершением git .

0 голосов
/ 03 октября 2017

Согласно ответу на git bash, автозаполнение медленное на windows 7 x64 , git 2.13 идет быстрее git-completion.bash

0 голосов
/ 21 марта 2012

Одним из очень быстрых и грязных решений является удаление следующего файла, отвечающего за автозаполнение.

/usr/local/git/contrib/completion/git-completion.bash
...