UbuntuとArchはzshシェルをデフォルトのシェルとして使用します。
私の次の行を使用して、zshシェルで履歴を自動補完するショートカット(上矢印)を設定しました.zshrc
。
bindkey "^[[A" history-beginning-search-backward
ただし、Ubuntuで.zshrc
起動および/または再起動すると、ショートカットは機能しません(入力を開始しても最後のコマンドのみが取得されます)。一方、Archではうまく動作します(最後のコマンドのみを取得します)what)I type)で始まります。
この問題を解決する方法を知っている人はいますか?
ベストアンサー1
ほとんどのxtermに似た端末では、Up(ほとんどのナビゲーションキーと同様に)端末が入力したかどうかに応じて送信または送信します␛[A
。␛OA
キーボード転送モードかどうか。そして、terminfosmkx
エントリは、rmkx
端末をこのモードに切り替えるか終了するために使用することができます。
kcuu1
(キーカーソル上へ1)terminfoエントリは、次の場合に送信されるUpシーケンスを記述します。キーボード転送モード、すなわち␛OA
。
Debian とその派生物には、/etc/zsh/zshrc
次のことを行うファイルがあります。
function zle-line-init () {
emulate -L zsh
printf > /dev/tty '%s' ${terminfo[smkx]}
}
これにより、zleがアクティブになると端末がこのモードに切り替わります。つまり、terminfoデータベースを使用してキーストロークに送信される文字の順序を理解することができます。
この文書も$key
連想配列の定義ウィジェットにマッピングするのに役立つterminfoエントリに基づいています。したがって、これらのシステムでは次のことができます。
(($+key[Up])) && bindkey $key[Up] history-beginning-search-backward
端末があるシステムで実行されているジョブの場合キーボード転送パターンとハッシュがほとんどまたはまったくないパターンの場合は、$key
次のようにできます。
bindkey $terminfo[kcuu1] history-beginning-search-backward
bindkey ${terminfo[kcuu1]/O/[} history-beginning-search-backward
また見なさい:
- カーソルキーが機能しない(ncurses FAQ)
- (すべての)シェルでカーソルキーを使用できないのはなぜですか?(xterm FAQ)