Problem
Ich verwende oh-my-zsh und Antigen, um mein Zsh zu verwalten.
Manchmal gebe ich versehentlich einen falschen / fehlgeschlagenen Befehl in Zsh ein und es ist sehr ärgerlich, wenn das Plugin zsh-autosuggestions diese Befehle auslöst .
Sagen wir zum Beispiel, ich habe gut status
eher getippt
als git status
.
Wenn ich nun versuche, den richtigen Befehl erneut einzugeben g
, wird nach der Eingabe das Autosuggestion-Plugin angezeigt, gut status
da dies die engste Übereinstimmung in der jüngeren Geschichte darstellt. Aber das ist ein fehlgeschlagener Befehl!
Was ich tun möchte, ist zu verhindern, dass diese fehlgeschlagenen Befehle meinen Verlauf "verschmutzen", damit das Autosuggestion-Plugin sie nicht vorschlägt.
Was habe ich getan
Ich habe danach gesucht und die beste Übereinstimmung, um Einträge aus dem Verlauf herauszuhalten, ist das Festlegen von HIST_IGNORE_SPACE oder Methoden zum Ignorieren bestimmter Befehle oder zum manuellen Löschen von Befehlen nach deren Eingabe. Sehen Sie dies und das . Aber wie @Adaephon 52 feststellte, geschieht dies, nachdem die Tat getan ist.
Was ich überlege zu tun
Ich habe gerade vor, eine Funktion zu schreiben, die jedes Mal ausgelöst wird, wenn ein fehlgeschlagener Befehl in Zsh eingegeben wird, um den neuesten Eintrag aus dem Verlauf zu löschen. Ich bin jedoch nicht vertraut genug mit Zsh, um zu wissen, ob diese Art von Trigger existiert oder wie man das macht.
Hinweis zur akzeptierten Lösung
Für diejenigen, die an diesem Problem interessiert sind, funktioniert die akzeptierte Lösung in dem Sinne, dass fehlgeschlagene Befehle nicht in der Verlaufsdatei gespeichert werden. fc -l
oder history
bestätigt dies.
Es scheint jedoch, dass das zsh-autosuggestions-Plugin eine Art lokales Caching durchführt (oder Vorschläge mithilfe eines anderen Mechanismus generiert), sodass die fehlgeschlagenen Befehle weiterhin vorgeschlagen werden, jedoch nur, wenn die Sitzung nicht beendet ist . Wenn der Benutzer eine neue Instanz der Shell startet und das Plugin vermutlich den zwischengespeicherten Verlauf laden muss, werden die fehlgeschlagenen Befehle nicht mehr vorgeschlagen (es sei denn, Sie geben sie natürlich erneut ein).
Die vorgeschlagene Lösung ist technisch korrekt, da ich meine Frage (fälschlicherweise) so formuliert habe, dass nur eine Antwort erforderlich ist, die Zsh daran hindert, die fehlgeschlagenen Befehle zu speichern, und die akzeptierte Lösung dies tut (wenn auch in begrenztem Umfang; siehe Link in Lösung für Einzelheiten).
Jeder, der mit Shell -Skripten vertraut ist (ich bin es nicht) und motiviert genug ist, kann das Skript zsh-autosuggestions überprüfen .