web-dev-qa-db-ja.com

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

GNOMEターミナル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~が表示されます。それは何か手掛かりを与えますか?

13
balki

私は今Fedoraにいますが、Archlinuxのwikiを注意深く読んで、すべてをお勧めします: HomeおよびEndキーが機能していません

それを修正するために私がしたこと:

  1. Ctrl-V Homeを押すと、エスケープされたHomeキーのシーケンスが出力されます。 ではありません\e[4~\e[1~は、/etc/inputrcを見て予想どおりです。 [H[Fでした

  2. 端末情報を抽出infocmp $TERM >terminfo.src

  3. vim terminfo.srcなどの編集用にそのファイルを開き、khomekendを探します。何かに割り当てられています。khome=\E[1~kend=\E[4~はそうではありませんこの場合の作業。それを削除して、手順#1で見つけたシーケンスに置き換えます。私にとって、編集後はkhome=\E[Hkend=\E[Fでした。

  4. 安全にプレイしたい場合は、[Fおよび[H(または使用したシーケンス)が他の何かに割り当てられていないことを確認してください。

  5. tic terminfo.srcを実行すると、~/.terminfoディレクトリが作成されます。

  6. .zshrcの上に他のすべてのコマンドの前に、次のように記述します:export TERMINFO=~/.terminfo

新しいターミナルウィンドウを開くと、大丈夫です。これで家と端が正常に動作しているはずです。

PS:bindkeyメソッドは理論的には機能し、簡単ですが、私にとってはそうではありませんでした。

4
hkoosha

ファンクションキーとカーソルキーによって送信されるエスケープシーケンスは、エスケープ文字とそれに続く印刷可能な文字で構成されます。押す Ctrl+V その後 Home。これにより、文字通りエスケープシーケンスが挿入されます。次に、bindkey命令を~/.zshrcに追加します。

命令は次のようになる可能性があります(0ではなくOに注意してください):

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

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

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

この答えは私の問題を本当によく説明し、修正しました。

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

TL; DR:PuTTY端末タイプをデフォルトのxtermからlinuxに変更します。

多分誰かもそれを使用することができます。

2
Thorian93

これらの行を/etc/zshrcに追加してから、source /etc/zshrcを実行します( here から取得)

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
2
Abhinandan N.M.