Fischartige schnelle/unaufdringliche Autosuggestionen für zsh.
Es schlägt Befehle während der Eingabe vor, basierend auf dem Verlauf und den Abschlüssen.
Anforderungen: Zsh v4.3.11 oder höher
Siehe INSTALL.md.
Während Sie Befehle eingeben, wird hinter dem Cursor eine Vervollständigung in gedämpfter grauer Farbe angezeigt. Diese Farbe kann durch Setzen der Variablen ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE
geändert werden. Siehe Konfiguration.
Wenn Sie die Taste → ( forward-char
Widget) oder Ende ( end-of-line
Widget) drücken, während sich der Cursor am Ende des Puffers befindet, wird der Vorschlag akzeptiert und der Inhalt des Befehlszeilenpuffers durch den Vorschlag ersetzt.
Wenn Sie das forward-word
Widget aufrufen, akzeptiert es den Vorschlag teilweise bis zu dem Punkt, zu dem sich der Cursor bewegt.
Möglicherweise möchten Sie die standardmäßigen globalen Konfigurationsvariablen überschreiben. Standardwerte dieser Variablen finden Sie hier.
Hinweis: Wenn Sie Oh My Zsh verwenden, können Sie diese Konfiguration in einer Datei im Verzeichnis $ZSH_CUSTOM
ablegen. Sehen Sie sich ihre Kommentare zum Überschreiben von Interna an.
Legen Sie ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE
fest, um den Stil zu konfigurieren, mit dem der Vorschlag angezeigt wird. Der Standardwert ist fg=8
, wodurch die Vordergrundfarbe auf Farbe 8 aus der 256-Farben-Palette gesetzt wird. Wenn Ihr Terminal nur 8 Farben unterstützt, müssen Sie eine Zahl zwischen 0 und 7 verwenden.
Es kann auch eine Hintergrundfarbe festgelegt werden und der Vorschlag kann fett, unterstrichen oder hervorstechend gestaltet werden. Dies würde beispielsweise Vorschläge mit fettem, unterstrichenem rosa Text auf einem cyanfarbenen Hintergrund anzeigen:
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE= " fg=#ff00ff,bg=cyan,bold,underline "
Weitere Informationen finden Sie im Abschnitt „Zeichenhervorhebung“ im zsh-Handbuch: man zshzle
oder online.
Hinweis: Einige iTerm2-Benutzer haben berichtet, dass sie die Vorschläge nicht sehen konnten. Wenn Sie davon betroffen sind, wird das Problem wahrscheinlich durch falsche Farbeinstellungen verursacht. Um dies zu korrigieren, gehen Sie in die Einstellung von iTerm2, navigieren Sie zu Profil > Farben und stellen Sie sicher, dass die Farben für Grundfarben > Hintergrund und ANSI-Farben > Hellschwarz unterschiedlich sind.
ZSH_AUTOSUGGEST_STRATEGY
ist ein Array, das angibt, wie Vorschläge generiert werden sollen. Die Strategien im Array werden nacheinander ausprobiert, bis ein Vorschlag gefunden wird. Derzeit stehen drei integrierte Strategien zur Auswahl:
history
: Wählt das aktuellste Spiel aus dem Verlauf aus.completion
: Wählt einen Vorschlag basierend auf dem, was die Tab-Vervollständigung vorschlagen würde. (erfordert das Modul zpty
, das seit 4.0.1 in zsh enthalten ist)match_prev_cmd
: Wie history
, wählt jedoch die aktuellste Übereinstimmung aus, deren vorheriges Verlaufselement mit dem zuletzt ausgeführten Befehl übereinstimmt (weitere Informationen). Beachten Sie, dass diese Strategie nicht wie erwartet mit ZSH-Optionen funktioniert, die die Verlaufsreihenfolge nicht beibehalten, wie z. B. HIST_IGNORE_ALL_DUPS
oder HIST_EXPIRE_DUPS_FIRST
. Wenn Sie beispielsweise ZSH_AUTOSUGGEST_STRATEGY=(history completion)
festlegen, wird zunächst versucht, einen Vorschlag aus Ihrem Verlauf zu finden. Wenn jedoch keine Übereinstimmung gefunden wird, wird ein Vorschlag aus der Vervollständigungs-Engine gefunden.
Dieses Plugin funktioniert, indem es benutzerdefiniertes Verhalten auslöst, wenn bestimmte ZLE-Widgets aufgerufen werden. Sie können Widgets zu diesen Arrays hinzufügen und daraus entfernen, um das Verhalten dieses Plugins zu ändern:
ZSH_AUTOSUGGEST_CLEAR_WIDGETS
: Widgets in diesem Array löschen den Vorschlag, wenn sie aufgerufen werden.ZSH_AUTOSUGGEST_ACCEPT_WIDGETS
: Widgets in diesem Array akzeptieren den Vorschlag, wenn sie aufgerufen werden.ZSH_AUTOSUGGEST_EXECUTE_WIDGETS
: Widgets in diesem Array führen den Vorschlag aus, wenn sie aufgerufen werden.ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS
: Widgets in diesem Array akzeptieren den Vorschlag teilweise, wenn sie aufgerufen werden.ZSH_AUTOSUGGEST_IGNORE_WIDGETS
: Widgets in diesem Array lösen kein benutzerdefiniertes Verhalten aus.Widgets, die den Puffer ändern und in keinem dieser Arrays gefunden werden, rufen nach dem Aufruf einen neuen Vorschlag ab.
Hinweis: Ein Widget sollte nicht zu mehr als einem der oben genannten Arrays gehören.
Setzen Sie ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE
auf einen ganzzahligen Wert, um die Autosuggestion für große Puffer zu deaktivieren. Die Standardeinstellung ist nicht festgelegt, was bedeutet, dass Autosuggestion für jede Puffergröße versucht wird. Der empfohlene Wert ist 20. Dies kann beim Einfügen großer Textmengen in das Terminal nützlich sein, um zu vermeiden, dass Autosuggestion für zu lange Zeichenfolgen ausgelöst wird.
Vorschläge werden in den zsh-Versionen 5.0.8 und höher standardmäßig asynchron abgerufen. Um asynchrone Vorschläge zu deaktivieren und sie stattdessen synchron abzurufen, unset ZSH_AUTOSUGGEST_USE_ASYNC
nach der Beschaffung des Plugins.
Wenn Sie alternativ eine ältere Version von zsh als 5.0.8 verwenden und den asynchronen Modus aktivieren möchten, legen Sie die Variable ZSH_AUTOSUGGEST_USE_ASYNC
nach der Beschaffung des Plugins fest (sie kann auf einen beliebigen Wert eingestellt werden). Beachten Sie, dass es in Versionen von zsh vor 5.0.8 einen Fehler gibt, bei dem Strg + C die Eingabeaufforderung nicht unmittelbar nach dem asynchronen Abrufen eines Vorschlags zurücksetzen kann.
Setzen Sie ZSH_AUTOSUGGEST_MANUAL_REBIND
(es kann auf einen beliebigen Wert eingestellt werden), um die automatische Neubindung des Widgets bei jedem Precmd zu deaktivieren. Dies kann die Leistung erheblich steigern, aber Sie müssen sich selbst um die erneute Bindung kümmern, wenn sich eine der Widget-Listen ändert oder wenn Sie oder ein anderes Plugin eines der Autosuggest-Widgets umschließen. Um Widgets erneut zu binden, führen Sie _zsh_autosuggest_bind_widgets
aus.
Legen Sie ZSH_AUTOSUGGEST_HISTORY_IGNORE
auf ein globales Muster fest, um zu verhindern, dass Vorschläge für Verlaufseinträge angeboten werden, die dem Muster entsprechen. Stellen Sie es beispielsweise auf "cd *"
ein, um niemals cd
-Befehle aus dem Verlauf vorzuschlagen. Oder stellen Sie "?(#c50,)"
ein, um niemals etwas mit 50 oder mehr Zeichen vorzuschlagen.
Hinweis: Dies betrifft nur die Vorschlagsstrategien history
und match_prev_cmd
.
Legen Sie ZSH_AUTOSUGGEST_COMPLETION_IGNORE
auf ein globales Muster fest, um zu verhindern, dass Vervollständigungsvorschläge angeboten werden, wenn der Puffer mit diesem Muster übereinstimmt. Legen Sie es beispielsweise auf "git *"
fest, um Vervollständigungsvorschläge für Git-Unterbefehle zu deaktivieren.
Hinweis: Dies betrifft nur die completion
.
Dieses Plugin stellt einige Widgets bereit, die Sie mit bindkey
verwenden können:
autosuggest-accept
: Akzeptiert den aktuellen Vorschlag.autosuggest-execute
: Akzeptiert den aktuellen Vorschlag und führt ihn aus.autosuggest-clear
: Löscht den aktuellen Vorschlag.autosuggest-fetch
: Ruft einen Vorschlag ab (funktioniert auch, wenn Vorschläge deaktiviert sind).autosuggest-disable
: Deaktiviert Vorschläge.autosuggest-enable
: Aktiviert Vorschläge erneut.autosuggest-toggle
: Schaltet zwischen aktivierten/deaktivierten Vorschlägen um.Dies würde beispielsweise Strg + Leertaste binden, um den aktuellen Vorschlag anzunehmen.
bindkey ' ^ ' autosuggest-accept
Wenn Sie ein Problem haben, durchsuchen Sie bitte die Liste der Probleme auf GitHub, um zu sehen, ob jemand anderes es bereits gemeldet hat.
Bevor Sie ein Problem melden, deaktivieren Sie bitte vorübergehend Abschnitte Ihrer Konfiguration und andere Plugins, die möglicherweise mit diesem Plugin in Konflikt stehen, um das Problem einzugrenzen.
Wenn Sie ein Problem melden, geben Sie bitte Folgendes an:
.zshrc
Konfiguration, die das Problem reproduziert. In diesem Kommentar finden Sie ein gutes Beispiel dafür, was das bedeutet.zsh --version
) Entfernen Sie den Code, der auf dieses Plugin verweist, aus ~/.zshrc
.
Entfernen Sie das Git-Repository von Ihrer Festplatte
rm -rf ~ /.zsh/zsh-autosuggestions # Or wherever you installed
Bearbeiten Sie die Quelldateien in src/
. Führen Sie make
, um zsh-autosuggestions.zsh
aus diesen Quelldateien zu erstellen.
Pull-Anfragen sind willkommen! Wenn Sie eine Pull-Anfrage senden, gehen Sie bitte wie folgt vor:
develop
( NICHT master
) Tests werden in Ruby unter Verwendung des rspec
Frameworks geschrieben. Sie verwenden tmux
, um ein Pseudoterminal anzusteuern, simulierte Tastenanschläge zu senden und Aussagen über den Terminalinhalt zu treffen.
Testdateien live in spec/
. Um die Tests auszuführen, führen Sie make test
aus. Um einen bestimmten Test auszuführen, führen Sie TESTS=spec/some_spec.rb make test
aus. Sie können auch eine zu verwendende zsh
Binärdatei angeben, indem Sie die Umgebungsvariable TEST_ZSH_BIN
festlegen (z. B. TEST_ZSH_BIN=/bin/zsh make test
).
Es ist möglich, die Tests für jede unterstützte Version von zsh in einem Docker-Image auszuführen, indem ein Image aus der bereitgestellten Docker-Datei erstellt wird. Um das Docker-Image für eine bestimmte Version von zsh zu erstellen (wobei <version>
unten durch den Inhalt einer Zeile aus der ZSH_VERSIONS
Datei ersetzt wird), führen Sie Folgendes aus:
docker build --build-arg TEST_ZSH_VERSION= < version > -t zsh-autosuggestions-test .
Führen Sie nach dem Erstellen des Images die Tests durch:
docker run -it -v $PWD :/zsh-autosuggestions zsh-autosuggestions-test make test
Dieses Projekt ist unter der MIT-Lizenz lizenziert. Den vollständigen Text der Lizenz finden Sie in der LICENSE-Datei.