Die Ausführung von Git-Befehlen auf der Registerkarte ZSH ist sehr langsam. Wie kann ich es ausschalten?

18

Wenn ich tippe:

rm <TAB>

Ich werde mögliche Abschlüsse fast sofort sehen.

Wenn ich jedoch tippe:

git rm <TAB>

Es bleibt einige Sekunden lang hängen, wenn es sich um ein Git-Repo handelt, oder zeigt keine Abschlüsse an, wenn ich mich außerhalb eines Git-Repos befinde.

Wie kann ich dieses Verhalten beheben?

Es gibt nichts in meiner .zshrc, das mit git zu tun zu haben scheint: - /

Casey Rodarmor
quelle
+1 Das treibt mich so verdammt an, dass ich mein Gehirn verdrahtet habe, um nicht zu schlagen, <TAB>wenn ich git benutze.
Christopher

Antworten:

26

Endlich habe ich mir die Mühe gemacht, dies zu googeln und mir diese SO-Antwort ausgedacht, die für mich perfekt funktionierte. Fügen Sie dies hinzu zu .zshrc:

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

Es gibt auch eine tiefe Mailingliste Thread hier darüber zu erklären , was zshso lange dauern tut.

Christopher
quelle
1
Das hat bei mir nicht geklappt. Ich lade die folgenden oh-my-zsh-Plugins: plugins = (git gitfast last-working-dir zeus). Ich habe die obige Funktion nach den Plugins geladen.
Justingordon
1
Ich hatte das gleiche problem Kommentar zur Bestätigung des Erfolgs: Unter OSX 10.8.5, zsh 4.3.11, git 1.8.2 hat der Eintrag .zshrc den Unterschied ausgemacht. Ohne diese Option wird die CPU regelmäßig auf 100% festgelegt. Damit scheint die Tab-Vervollständigung für Git-Befehle in etwa gleich zu sein wie für alle anderen. Vielen Dank! :)
wöchentlich
Stellen Sie sicher, dass Sie diesen Befehl vor Ihre zsh-Plugins setzen. Andernfalls führt dies möglicherweise zu einer schnellen Autovervollständigung, aber zu Fehlern, sobald Sie versuchen, den Befehl git tatsächlich auszuführen.
Simon
1

Hier ist eine weitere Option: die offizielle Git zsh-Vervollständigung: git-completion.zsh . Alles, was Sie tun müssen, ist, das herunterzuladen ~/.zsh/_gitund sicherzustellen, dass es in Ihrem Pfad ist:

fpath=(~/.zsh $fpath)

Ich finde es interessant, dass dieser Thread in einer anderen Antwort erwähnt wird; Ich habe diesen Thread gestartet und als Ergebnis die offizielle Git zsh-Vervollständigung geschrieben.

FelipeC
quelle