zsh, Pfeil nach oben wiederholt nur eindeutige Befehle?

21

Ich suche nach einer Einstellung, die es so macht, dass wenn ich den Aufwärtspfeil drücke, zsh Befehle anzeigt, die ich kürzlich bearbeitet habe. Der Haken ist, ich möchte nur eindeutige Befehle. Wenn ich echo "hello world"50 Mal tippe, muss ich derzeit 50 Mal den Pfeil nach oben drücken, um den Befehl zu erhalten, den ich verwendet habe, bevor ich den Echo-Befehl eingebe. Das ist gelinde gesagt ärgerlich.

Irgendwelche Gedanken darüber, welche Einstellung ich aktivieren / deaktivieren muss?

Lee Olayvar
quelle

Antworten:

23

HIST_IGNORE_ALL_DUPSwird wirft alle vorherigen Spiele des Befehls, die verwirrend sein kann , wenn die Geschichte als Protokoll verwenden , was später Sie getan haben.

Eine engere Anpassung an Ihre Bedürfnisse ist wahrscheinlich die HIST_IGNORE_DUPSoder sogar die HIST_FIND_NO_DUPSOption.

Siehe man zshoptions | less -p History:

HIST_FIND_NO_DUPS: Bei der Suche nach Verlaufseinträgen im Zeileneditor werden keine Duplikate einer zuvor gefundenen Zeile angezeigt, auch wenn die Duplikate nicht zusammenhängend sind.

HIST_IGNORE_ALL_DUPS: Wenn eine der Verlaufsliste hinzugefügte neue Befehlszeile eine ältere dupliziert, wird der ältere Befehl aus der Liste entfernt (auch wenn es sich nicht um das vorherige Ereignis handelt).

HIST_IGNORE_DUPS: Geben Sie keine Befehlszeilen in die Verlaufsliste ein, wenn es sich um Duplikate des vorherigen Ereignisses handelt.

peth
quelle
1
HIST_FIND_NO_DUPS ist eine bessere Antwort als ich denke.
Mikel
3

Ich sehe keine Möglichkeit, dies buchstäblich nur zu tun, aber wenn Sie die HIST_IGNORE_ALL_DUPSOption aktivieren, wird nur die aktuellste Version eines Befehls im Verlauf beibehalten, wodurch Sie denselben Effekt erzielen.

Siehe man zshoptionsfür weitere Einzelheiten.

Mikel
quelle
Funktioniert super! Es sei denn, ich vermisse etwas, das ist genau das, was ich wollte :)
Lee Olayvar