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~
が表示されます。それは何か手掛かりを与えますか?
私は今Fedoraにいますが、Archlinuxのwikiを注意深く読んで、すべてをお勧めします: HomeおよびEndキーが機能していません 。
それを修正するために私がしたこと:
Ctrl-V Homeを押すと、エスケープされたHomeキーのシーケンスが出力されます。 ではありません\e[4~
と\e[1~
は、/etc/inputrc
を見て予想どおりです。 [H
と[F
でした
端末情報を抽出infocmp $TERM >terminfo.src
vim terminfo.src
などの編集用にそのファイルを開き、khome
とkend
を探します。何かに割り当てられています。khome=\E[1~
とkend=\E[4~
はそうではありませんこの場合の作業。それを削除して、手順#1で見つけたシーケンスに置き換えます。私にとって、編集後はkhome=\E[H
とkend=\E[F
でした。
安全にプレイしたい場合は、[F
および[H
(または使用したシーケンス)が他の何かに割り当てられていないことを確認してください。
tic terminfo.src
を実行すると、~/.terminfo
ディレクトリが作成されます。
.zshrc
の上に他のすべてのコマンドの前に、次のように記述します:export TERMINFO=~/.terminfo
新しいターミナルウィンドウを開くと、大丈夫です。これで家と端が正常に動作しているはずです。
PS:bindkeyメソッドは理論的には機能し、簡単ですが、私にとってはそうではありませんでした。
ファンクションキーとカーソルキーによって送信されるエスケープシーケンスは、エスケープ文字とそれに続く印刷可能な文字で構成されます。押す Ctrl+V その後 Home。これにより、文字通りエスケープシーケンスが挿入されます。次に、bindkey
命令を~/.zshrc
に追加します。
命令は次のようになる可能性があります(0
ではなくO
に注意してください):
bindkey '\e[OH' beginning-of-line
bindkey '\e[OF' end-of-line
Home
とEnd
のシーケンスCTRL-v
と^[[H
をそれぞれ取得するには、^[[F
を押してから放し、次にHome
またはEnd
キーを押す必要があることがわかりました。 .zshrc
ファイルに次の行を追加すると、問題が解決しました。
bindkey '^[[H' beginning-of-line
bindkey '^[[F' end-of-line
この答えは私の問題を本当によく説明し、修正しました。
https://stackoverflow.com/a/686458/5472892
TL; DR:PuTTY端末タイプをデフォルトのxterm
からlinux
に変更します。
多分誰かもそれを使用することができます。
これらの行を/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