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).

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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.