解決策なし

解決策なし

私は最近oh-my-zshに切り替えましたが、上矢印キーがどのように機能するかに慣れていません。たとえば、sshと入力して上矢印を押すと、sshで始まるコマンドのみが表示されますが、前のコマンドは表示したいと思います。私に慣れているBashのように実行するにはどうすればよいですか?

次の行を追加します。回答zshrcの終わりに行くことは役に立ちませんでしたが、bashからoh-my-zshにアップグレードして切り替えた後もこれは起こりませんでした。

答え1

解決策なし

皮肉なことに、人々が尋ねる質問に対する答えは繰り返しです。

バインディングキー「\ e [A」」は、履歴から戻る検索を開始します。
Bindkey '\e[B'] レコードが今後検索を開始します。
…はい完全に間違った答え。これは、ターミナル矢印編集キーの制御順序がZLEによって拡張ウィジェットにマッピングされ、history-beginning-search-backwardOh history-beginning-search-forwardMy ZSHhistory-substring-searchプラグインによって提供されることを確認します。

これがまさにあなたが考えたものです欲しくない思う。

他の動作を好むので、この機能をオフにしようとしているのです。動作が損なわれたため、修正しようとするものではありません。

解決策

あなたが望むのは、通常のZシェルと同様にウィジェットにマップされるキーです。 Oh My ZSHは、一部(すべてではありませんが)人々のお気に入りのZシェルの拡張とカスタマイズです。 Vanilla Z Shellのウィジェットは、以前のBourne Againシェルで好きだったアクションにほぼ似ています。 (Bourne Againシェルとは異なり、複数行の編集バッファがある場合は、バッファの上端と下端から上下に移動し、履歴から上下に移動します。)

これらのウィジェットは次のとおりです。

バインディングキー "$terminfo[kcuu1]" がオンラインまたは履歴に記録されています。
バインドされたキー "$terminfo[kcud1]"がオフラインであるか、履歴履歴があります。

作業方法に注意を払ってください。特定の端末タイプを配線しないスクリプトを入力してください。または"$termcap[ku]"を使用できます"$termcap[kd]"。 Zシェルは、ユーザーが適切なモジュールをロードしたと仮定し、それらの間のマッピングを維持します。しかし、一般的に言えば、世界は今terminfoが利用可能であればそれを好むでしょう。異機種システムと一緒に使用したり、他の人に物を提供するために厳密に防弾したい場合は、test -nOh My ZSH拡張機能が実際に実行しているかのように必要です。

test -n "$terminfo[kcuu1]" &&bindkey "$terminfo[kcuu1]" オンラインまたは履歴
test -n "$terminfo[kcud1]" &&bindkey "$terminfo[kcud1]" オフラインまたは履歴

(極端な場合、可能性がほとんどない可能性に対処するには、いくつかの変数拡張が必要になるでしょう。ああ"${terminfo[x]-${termcap[y]}}"、私のZSH拡張は後者を気にしません。 termcapモジュールとterminfoモジュールをロードしているので、現在の端末タイプのレコードが実際に関連する制御順序を定義しているかどうかを心配してくださいtest -n

Bourne Againシェルの動作のより正確な近似は次のとおりです。

キー "$terminfo[kcuu1]" 履歴バインディング
バインディングキー "$terminfo[kcud1]" 履歴
これは通常のZシェルのデフォルトではなく、最初の複数行のコマンドラインを編集した後、デフォルトを必要に応じて決定できます。 ☺

関連情報