ターミナルでホームキーが機能しない


13

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~、画面に印刷されます。それは何か手がかりを与えますか?


あなたは持っています.inputrcあなたのホームディレクトリには?これは、新しく作成したユーザーで発生しますか?これは常に起こりましたか、それともいつか始まりましたか?
バハマ

いいえ、持っていません.inputrc。新しいユーザーを作成する権限がありません。これはいつもそうだった。I'amはとの生活ctrl +actrl+e
バルキ

1
私は示唆しています、その場合には推測ctrl+actrl+e;-)
bahamat

回答:


3

現在、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ために見て、khomeそしてkendそれが何かに割り当てられている、聞かせてのは言うkhome=\E[1~kend=\E[4~、この場合には動作していないされています。それを削除し、ステップ#1で見つかったシーケンスに置き換えるので、私にとっては、それがあった編集後:khome=\E[Hkend=\E[F

  4. あなたがそれを安全にプレイしたいなら、確かめ[Fてください[H(そしてあなたが今使ったどんなシーケンスでも)他のものに割り当てられないか、物事は台無しにされます!

  5. ディレクトリtic terminfo.srcを作成するrun ~/.terminfo

  6. .zshrc他のすべてのコマンドの前に、次を配置します。export TERMINFO=~/.terminfo

新しいターミナルウィンドウを開くと、元気になり、ホームとエンドが動作しているはずです。

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


6

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

命令は次のようになります(注意O、ではありません0):

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

Ctrlを押してからHomeを押しても何も印刷されません。何も起こりません。0からOへの変更も試みました。
バルキ

@balki CtrlではなくCtrl + Vです。答えにフォーマットの問題があることに気付きました。
ジル 'SO-悪であるのをやめる'

ありがとう!:)現在、ctrl + aand ctrl +eおよびviモードに
慣れてい

5

私は私がヒットしなければならなかった見つけCTRL-v、その後、手放すHomeか、Endシーケンスを取得するキー^[[H^[[FのためにHomeEnd、それぞれ。.zshrcファイルに次の行を追加すると、問題が解決しました。

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

2

これらの行を追加し/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

2

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

/programming//a/686458/5472892

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

たぶん誰かがそれを使用することもできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.