Uzupełnianie poleceń git przez tabulator ZSH jest bardzo wolne. Jak mogę to wyłączyć?

18

Jeśli napiszę:

rm <TAB>

Prawie natychmiast zobaczę możliwe ukończenia.

Jeśli jednak napiszę:

git rm <TAB>

Zawiesza się na kilka sekund, jeśli jest w repozytorium git, lub nie pokazuje żadnych ukończeń, jeśli jestem poza repozytorium git.

Jak mogę naprawić to zachowanie?

W moim .zshrc nie ma nic, co wyglądałoby na to, że ma to związek z git: - /

Casey Rodarmor
źródło
+1 To doprowadza mnie do tego, że jestem tak pobłażliwy, że podłączyłem swój mózg, aby nie uderzać <TAB>podczas używania gita.
Christopher

Odpowiedzi:

26

W końcu zadałem sobie trud, aby google i wymyśliłem SO odpowiedź, która działała idealnie dla mnie. Dodaj to do .zshrc:

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

Jest też lista dyskusyjna głęboki gwint tutaj o to wyjaśniając, co zshrobi się tak długo.

Krzysztof
źródło
1
To mi nie zadziałało. Ładuję następujące wtyczki oh-my-zsh: plugins = (git gitfast last-working-dir zeus). Załadowałem powyższą funkcję po wtyczkach.
justingordon
1
Miałem ten sam problem. Komentowanie w celu potwierdzenia sukcesu: w OSX 10.8.5, zsh 4.3.11, git 1.8.2, wpis .zshrc zrobił różnicę. Bez tego procesor jest regularnie przypinany na 100%. Dzięki temu uzupełnianie tabulatorów wydaje się mniej więcej takie samo dla komend git, jak dla innych. Dziękuję Ci! :)
tydzień
Upewnij się, że umieściłeś to polecenie przed wtyczkami zsh, w przeciwnym razie możesz skończyć z szybkim autouzupełnianiem, ale wystąpią błędy po próbie uruchomienia polecenia git.
Simon
1

Oto kolejna opcja: oficjalne zakończenie Git zsh: git-complete.zsh . Wszystko, co musisz zrobić, to pobrać ~/.zsh/_giti upewnić się, że znajduje się w ścieżce fpath:

fpath=(~/.zsh $fpath)

Uważam za interesujące, że ten wątek jest wymieniony w innej odpowiedzi; Zacząłem ten wątek i w rezultacie napisałem oficjalne zakończenie Git zsh.

FelipeC
źródło