zsh で 1 行上にスクロールするにはどうすればよいでしょうか?

zsh で 1 行上にスクロールするにはどうすればよいでしょうか?

私は bash で iTerm2 を使用しており、 と入力して履歴バッファを 1 行上にスクロールしますShift+Up。zsh シェルに切り替えると、 と入力されるだけです2A。キーボードのみを使用して、できれば を使用して、zsh で 1 行上にスクロールするにはどうすればよいですかShift+Up?

答え1

端末エミュレーターによって異なると思います。

例えば、翻訳、konsole ではShift+動作しますUp。xtermでは動作しませんが、 +
動作します。ShiftPgUp

iTerm2 ではデフォルトで動作するようです:

  • 1行上に移動する
  • 1行下に移動

答え2

探している機能は、up-historyおよびup-line-or-historyウィジェット (スクロールダウンの場合はdown-historyおよび) によって提供されます。down-line-or-history

デフォルトではup-line-or-historyにバインドされているはずですUpが、 を使用して (ほぼ) 他のキー シーケンスにバインドできますbindkey。端末では、特殊キー (印刷可能な文字を生成しないキー) によってキー シーケンスが生成され、それがシェルによって解釈されるか、または、2AShift+の例にUp示すように解釈されません。これらのキー シーケンスは、端末エミュレータによっても異なる場合があります。端末の正しいキー シーケンスを取得するには、端末を開いて、Ctrl+を押してvから、必要なキーの組み合わせ ( Shift+ Up) を押します。私の端末 (rxvt-unicode) では が表示されます^[[a。次に、シーケンスを にバインドできますup-history

bindkey <in-string> up-history

<in-string>見つかったシーケンスに置き換えるだけです。私の場合は

bindkey '^[[a' up-history

注1:シーケンスには、他の方法で解釈される文字が含まれる可能性が高いため、シーケンスを引用符で囲む必要がある可能性が高くなりますzsh

注2:一部のキーの組み合わせでは、同一のキーシーケンスが生成される場合があります。たとえば、Ctrl+と組み合わせた文字はShift、 とのみ組み合わせた同じ文字と通常は変わりません。 + +と+はどちらも、通常は を生成します。一部の端末エミュレーターではCtrl、+の組み合わせは端末自体のショートカットにも使用され、シェルでは使用できません。CtrlShiftaCtrla^ACtrlShift

関連情報