
私は 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
。端末では、特殊キー (印刷可能な文字を生成しないキー) によってキー シーケンスが生成され、それがシェルによって解釈されるか、または、2A
のShift+の例に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^A
CtrlShift