Wie kann ich in zsh eine Zeile nach oben scrollen?

Wie kann ich in zsh eine Zeile nach oben scrollen?

Ich verwende iTerm2 mit Bash und scrolle durch den Verlaufspuffer eine Zeile nach oben, indem ich eingebe Shift+Up. Wenn ich zu meiner ZSH-Shell wechsle, wird nur eingegeben 2A. Wie kann ich in ZSH nur mit meiner Tastatur eine Zeile nach oben scrollen, vorzugsweise mit Shift+Up?

Antwort1

Ich denke, es hängt vom Terminalemulator ab.

Zum Beispiel mitzsh, in der Konsole funktioniert es Shift+ Up.
In xterm nicht, aber es funktioniert Shift+ PgUp.

Es scheint, dass es mit iTerm2 standardmäßig funktionieren sollte:

  • eine Zeile nach oben
  • eine Zeile nach unten verschieben

Antwort2

Die von Ihnen gesuchte Funktion wird durch die Widgets up-historyund up-line-or-history( down-historyund down-line-or-historyzum Herunterscrollen) bereitgestellt.

Standardmäßig up-line-or-historysollte es an gebunden sein, Upaber Sie können es mit an (fast) jede andere Tastenfolge binden bindkey. In Terminals generieren spezielle Tasten (Tasten, die kein druckbares Zeichen erzeugen) eine Tastenfolge, die dann von der Shell interpretiert wird – oder auch nicht, wie Ihr Beispiel für 2Afor Shift+ Upzeigt. Diese Tastenfolgen können sich auch zwischen Terminalemulatoren unterscheiden. Um die richtige Tastenfolge für Ihr Terminal zu erhalten, öffnen Sie es, drücken Sie dann Ctrl+ vund anschließend die gewünschte Tastenkombination ( Shift+ Up). Auf meinem Terminal (rxvt-unicode) erhalte ich ^[[a. Sie können die Folge dann an das up-historyWidged binden:

bindkey <in-string> up-history

Ersetzen Sie es einfach <in-string>durch die gefundene Sequenz. In meinem Fall

bindkey '^[[a' up-history

Anmerkung 1:Sie müssen die Sequenz höchstwahrscheinlich in Anführungszeichen setzen, da sie wahrscheinlich Zeichen enthält, die zshanders interpretiert werden.

Anmerkung 2:Einige Tastenkombinationen können identische Tastenfolgen erzeugen. Beispielsweise unterscheiden sich Buchstaben, die mit Ctrl+ kombiniert werden Shift, normalerweise nicht von denselben Buchstaben, die nur mit kombiniert werden Ctrl. Sowohl Ctrl+ Shift+ aals auch Ctrl+ aerzeugen normalerweise ^A. In einigen Terminalemulatoren werden Ctrl+ Shift-Kombinationen sogar für Tastenkombinationen des Terminals selbst verwendet und sind in der Shell nicht verfügbar.

verwandte Informationen