Optimieren der automatischen Vervollständigung von zsh git

10

Ich habe gerade von Bash auf Zsh 4.3.4 unter Ubuntu Hardy umgestellt. Ich entwickle mich mit git und kämpfe ständig mit den Standard-git-Vervollständigungen: Die Vervollständigung von Dateinamen versucht klug zu sein, indem sie erkennt, was Sie hinzugefügt oder entfernt haben (mithilfe von git-ls-Dateien), aber manchmal kommt es zu Fehlern --- zB wenn Sie sich in einem Unterverzeichnis befinden. Es weiß auch nichts über meine benutzerdefinierten Git-Aliase (z. B. Git CI als Alias ​​für Commit).

zsh Superuser, wie soll ich diese Situation verbessern?

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

  • Deaktivieren Sie die Vervollständigung des Git-Dateinamens, und lassen Sie nur die Vervollständigung von Zweig / Tag / Befehlsname / Befehlsoption übrig.
  • Ersetzen Sie die Vervollständigung des "intelligenten" Dateinamens durch die reguläre Vervollständigung des zsh-Dateinamens.
  • Holen Sie sich eine neuere _git-Abschlussdatei, wenn diese Fehler behoben sind, und überschreiben Sie die Systemdatei.

Vielen Dank!

Emil Setz dich
quelle
Haben Sie versucht, github.com/robbyrussell/oh-my-zsh
ukanth
Ja, soweit ich das beurteilen kann, wird lediglich eine Git-Eingabeaufforderung hinzugefügt und die zugrunde liegenden Vervollständigungen werden nicht optimiert.
Emil Sit
Kann uns jemand sagen, wie man die "intelligente" Vervollständigung für alle Git-Befehle deaktiviert? Sie machen zu viel IO. Die Shell muss sofort reagieren. Ich möchte nur zur guten alten einfachen Dateinamenvervollständigung für Git-Befehle zurückkehren. Jedes Mal, wenn ich eine Websuche dafür durchführe, erhalte ich ein Labyrinth allgemeiner zsh-Manpage-Informationen.
Peter Lyons
2
Zu Ihrer Information für alle, die nur die nervige Git-Vervollständigung deaktivieren möchten, die dazu führt, dass die Shell das Ausführen von E / A blockiert, habe ich unter Ubuntu 10.04 Folgendes getan: sudo mv /usr/share/zsh/functions/Completion/Unix/_git /usr/share/zsh/functions/Completion/Unix/OFF_git
Peter Lyons

Antworten:

5

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 zumindest das Problem, dass Git-Aliase nicht vollständig sind.

Anstatt meine Installation zu hacken, habe ich dies zu meinem lokalen hinzugefügt .zshrc:

customzsh=/usr/local/src/zsh-4.3.10/bin/zsh-4.3.10
if [ "$SHELL" != "$customzsh" ]; then
  export SHELL=$customzsh
  exec $customzsh
fi
ein bezahlter Nerd
quelle
5

Für große Projekte sind sogar die neueren Git-Vervollständigungsskripte viel zu langsam. Fügen Sie den folgenden Befehl in Ihre .zshrc ein, um sie zu deaktivieren und nur die normale Dateivervollständigung zu verwenden:

compdef -d git
schnell
quelle