ホームキーが端末で機能しない

ホームキーが端末で機能しない

私はGNOME Terminal 2.7.3とzsh 4.3.9(x86_64-unknown-linux-gnu)を使用しています。

HomeそしてEnd動作しません。押しても何も起こらず、何も表示されません。しかし、(シェル出力の先頭までスクロール)を押すと機能し、shift + Home他のGUIプログラムでも機能します。私はグーグルをして次のことを試しました。変更を維持してください。:(

  885  bindkey "\e[1~" beginning-of-line
  886  bindkey "\e[H" beginning-of-line
  887  bindkey "\e1~" beginning-of-line
  888  bindkey "\eH" beginning-of-line
  889  bindkey "\e[0H" beginning-of-line

PS:最後のタブでキーを押すと、画面に印刷がCtrl + pagedown表示されます。;5~これはどのような手がかりを提供しますか?

答え1

ファンクションキーとカーソルキーによって送信されるエスケープシーケンスは、エスケープ文字と印刷可能文字で構成されます。Ctrl+を押してVからを押しますHome。文字通りエスケープシーケンスが挿入されます。その後、bindkeyディレクティブを~/.zshrc

ディレクティブは次のようになります(O代わりに0)。

bindkey '\e[OH' beginning-of-line
bindkey '\e[OF' end-of-line

答え2

とforと各シーケンスを取得するには、を押してCTRL-v放してから、またはHomeキーを押す必要があることがわかりました。ファイルに次の行を追加することで問題が解決しました。End^[[H^[[FHomeEnd.zshrc

bindkey '^[[H' beginning-of-line
bindkey '^[[F' end-of-line

答え3

次の行を追加して/etc/zshrc実行しますsource /etc/zshrc(次から取得)。ここ)

bindkey '\e[1~'   beginning-of-line  # Linux console
bindkey '\e[H'    beginning-of-line  # xterm
bindkey '\eOH'    beginning-of-line  # gnome-terminal
bindkey '\e[2~'   overwrite-mode     # Linux console, xterm, gnome-terminal
bindkey '\e[3~'   delete-char        # Linux console, xterm, gnome-terminal
bindkey '\e[4~'   end-of-line        # Linux console
bindkey '\e[F'    end-of-line        # xterm
bindkey '\eOF'    end-of-line        # gnome-terminal

答え4

この答えは私の問題を非常によく説明して解決します。

https://stackoverflow.com/a/686458/5472892

簡単に言うと:PuTTY 端末の種類を既定値xtermからlinux

たぶん誰かがこれを使うことができます。

関連情報