Zsh: Lassen Sie den Aufwärtspfeil identische Befehle überspringen

10

In den meisten Unix-Shells ersetzt die Pfeiltaste den Befehl, der vom vorherigen Befehl im Verlauf bearbeitet wird. Der Verlauf kann mit dem Befehl angezeigt werden history.

kann mehr als einmal gedrückt werden, um in der Geschichte aufzusteigen.

Meine Frage ist:

Wie kann ich meine Shell so konfigurieren, dass alle Befehle übersprungen werden, die mit dem aktuellen identisch sind?

In der Tat gebe ich oft viele makehintereinander ein. Wenn ich einen älteren Befehl erneut eingeben (oder geringfügig ändern) möchte, muss ich viele Male drücken, um alle makeBefehle zu überspringen .

Ich weiß, dass dies keineswegs der einzige Tipp ist, der die Produktivität der Schale erhöht.

Bonus:

  • Geben Sie eine Konfiguration an, die für die Bash-Shell funktioniert.
  • Bewahren Sie den Verlauf auf (es kann hilfreich sein, zu wissen, dass Sie einen Befehl mehrmals hintereinander eingegeben haben).
Gabriel Devillers
quelle

Antworten:

15

Für zsh fügen Sie dies in Ihre Konfiguration ein:

setopt histignoredups

Dabei werden doppelte Verlaufseinträge während der Suche ignoriert .

Die entsprechende Einstellung für Bash ist

HISTCONTROL=$HISTCONTROL:ignoredups
Martin Sugioarto
quelle
1
danke, setopt histignoredupsmacht den Job aber unterdrückt auch Duplikate aus der Geschichte
Gabriel Devillers
Ja genau. In den meisten Fällen ist dies das, was Sie wollen. Wenn Sie einen Vorschlag gesehen haben und ihn nicht möchten, möchten Sie ihn nicht erneut vorschlagen lassen. Duplikate werden übrigens nicht aus dem Verlauf gelöscht.
Martin Sugioarto
Sie haben Recht, aber ich meinte: Zukünftige Duplikate werden nicht zum Verlauf hinzugefügt.
Gabriel Devillers
Sie werden hinzugefügt, sonst wäre die andere Option histexpiredupsfirst, die ich auch benutze, nicht sinnvoll. Duplikate verfallen zuerst, bevor das Alter betrachtet wird. (Ich spreche hier von zsh)
Martin Sugioarto