zsh ignoriert HIST_FIND_NO_DUPS

zsh ignoriert HIST_FIND_NO_DUPS

Ich versuche, meine Z-Shell mit „setopt HIST_FIND_NO_DUPS“ so zu konfigurieren, dass keine doppelten Verlaufseinträge angezeigt werden.

HIST_FIND_NO_DUPS
When searching for history entries in the line editor, do not display duplicates of a line previously found, even if the duplicates are not contiguous.

Es funktioniert jedoch nicht wie erwartet. Wenn ich diesen Verlauf habe:

    1  history
    2  cd /bin
    3  cd /bin
    4  cd /bin

Ich gehe davon aus, dass ich zweimal die NACH-OBEN-Taste drücke (was auf „up-line-or-history“ eingestellt ist) und in meiner Eingabeaufforderung „history“ erhalte. Stattdessen erhalte ich jedoch „cd /bin“. Wenn ich viermal die NACH-OBEN-Taste drücke, wird der Befehl „history“ aufgerufen, was im Grunde das Standardverhalten ist, wenn HIST_FIND_NO_DUPS nicht eingestellt ist.

Ich weiß, dass ich andere Optionen verwenden könnte, die das Speichern doppelter Befehle von vornherein verhindern würden (wie etwa HIST_IGNORE_ALL_DUPS), aber das ist nicht das Verhalten, das ich möchte.

Antwort1

HIST_FIND_NO_DUPS

WannSucheBei Verlaufseinträgen im Zeileneditor werden keine Duplikate einer zuvor gefundenen Zeile angezeigt, auch wenn die Duplikate nicht zusammenhängend sind.

Ich denke, es funktioniert wie vorgesehen und setopt HIST_FIND_NO_DUPSsollte die Ergebnisse nicht beeinflussen, wenn Sie einfach den Pfeil nach oben drücken. Es beeinflusst die angezeigten Suchergebnisse, wenn Sie drücken Ctrl-r. Angenommen, Sie haben den folgenden Verlauf:

mvn clean package
mvn clean package
mvn clean package -DSkipTests
mvn clean package

Wenn Sie jetzt drücken Ctrl-rund tippen , mvnerhalten Sie mvn clean packageeinen Vorschlag. Wenn Sie Ctrl-rerneut drücken, erhalten Sie mvn clean package -DSkipTests. Ctrl-rDas dritte Drücken führt nicht zu einem neuen Vorschlag, da Duplikate von nicht zugelassen werden HIST_FIND_NO_DUPS. Ohne HIST_FIND_NO_DUPSwürde Ihnen die Shell mvn clean packageerneut anzeigen.

verwandte Informationen