Zsh git automatische Vervollständigung anpassen

4667
Emil Sit

Ich habe gerade von bash zu zsh 4.3.4 auf Ubuntu Hardy gewechselt. Ich entwickle mich mit git und kämpfe mich ständig mit den Standard-git-Vervollständigungen ab: Dateinamenvervollständigung versucht intelligent zu sein, indem Sie herausfinden, was Sie hinzugefügt oder entfernt haben (mithilfe von git-ls-Dateien), aber manchmal kommt es zu Problemen. zB wenn Sie sich in einem Unterverzeichnis befinden. Es kennt auch nicht meine benutzerdefinierten git-Aliase (z. B. git ci als Alias ​​für commit).

zsh superusers, wie soll ich diese Situation verbessern?

Hier sind einige meiner Gedanken, obwohl ich nicht weiß, wie ich sie umsetzen soll, da ich neu bei zsh bin. Vielleicht können Sie helfen oder Ihre eigenen anbieten:

  • Deaktivieren Sie die Dateinamenvervollständigung von git und lassen Sie nur die Vervollständigung von Zweig / Tag / Befehlsname / Befehlsoption.
  • Ersetzen Sie die "intelligente" Dateinamenvervollständigung durch die reguläre zsh-Dateinamenvervollständigung.
  • Besorgen Sie sich eine neuere _git-Beendigungsdatei, wenn diese Fehler behoben werden, und überschreiben Sie die System-Datei.

Vielen Dank!

9
Haben Sie http://github.com/robbyrussell/oh-my-zsh ausprobiert? ukanth vor 14 Jahren 0
Ja, soweit ich das beurteilen kann, wird lediglich ein git-Prompt hinzugefügt und die darunter liegenden Vervollständigungen werden nicht angepasst. Emil Sit vor 14 Jahren 0
Kann uns jemand sagen, wie wir die "intelligente" Vervollständigung für alle git-Befehle deaktivieren können? Sie machen zu viel IO. Die Shell muss sofort reagieren. Ich möchte nur auf die gute alte Dateinamenvervollständigung für git-Befehle zurückgreifen. Jedes Mal, wenn ich eine Web-Suche danach durchführe, bekomme ich nur ein Labyrinth von generischen zsh-Man-Page-Informationen. Peter Lyons vor 13 Jahren 0
FYI für alle, die einfach die nervige Git-Vollendung deaktivieren wollen, die die Shell dazu veranlasst, IO zu blockieren. Auf Ubuntu 10.04 habe ich Folgendes getan: `sudo mv / usr / share / zsh / functions / Fertigstellung / Unix / _git / usr / share / zsh / funktionen / Fertigstellung / Unix / OFF_git` Peter Lyons vor 13 Jahren 2

2 Antworten auf die Frage

4
a paid nerd

Versuchen Sie, auf die neueste Version von Zsh zu aktualisieren. Ich habe gerade ein Upgrade von 4.3.4 auf 4.3.10 durchgeführt und es behebt das Problem, dass Git-Aliase nicht abgeschlossen werden.

Anstatt meine Installation zu hacken, fügte ich dies meinem lokalen hinzu .zshrc:

customzsh=/usr/local/src/zsh-4.3.10/bin/zsh-4.3.10 if [ "$SHELL" != "$customzsh" ]; then export SHELL=$customzsh exec $customzsh fi 
4
swift

Bei großen Projekten sind selbst die neueren Git-Abschlussskripts viel zu langsam. Um sie zu deaktivieren und nur die normale Dateivervollständigung zu verwenden, fügen Sie den folgenden Befehl in Ihre .zshrc ein:

compdef -d git