webdevqa.jp.net

バッシュ、^ Hと^をグローバルに修正する方法バックスペースの問題

リモートサーバーのシェルが端末のバックスペースキーを^?と見なし、場合によっては^Hと見なし、誤って誤った文字を出力するという、この頻繁に発生する問題を修正したいと思います。バックスペースを押します。 ^ Hまたは^?に設定した場合私の.bashrcファイルでstty erase ^Hまたはstty erase ^?を使用し、他の端末を使用してサーバーにアクセスすると、多くの場合間違ってしまいます。そのため、Backspaceキーが間違っていることに気付いた場合は、手動でstty erase [whatever]を入力して修正する必要があるので困っています。

私がやりたいのは、^?^Hの両方をバックスペースにバインドすることです。これができる場合は、すべての.bashrcファイルに追加するだけで、確実にこれを終了できます。悪夢。これは可能ですか?もしそうなら、どうですか?

12
fragsworth

このページ には、この問題でこれまでに必要となるすべての情報が含まれています。ぜひお読みください。ここで、bashを使用している場合は、次の行を含む~/.inputrcファイルを作成するだけで十分です。

"\e[3~": delete-char
# this is actually equivalent to "\C-?": delete-char
# VT
"\e[1~": beginning-of-line
"\e[4~": end-of-line
# kvt
"\e[H":beginning-of-line
"\e[F":end-of-line
# rxvt and konsole (i.e. the KDE-app...)
"\e[7~":beginning-of-line
"\e[8~":end-of-line

追加のボーナスとして、彼らは Home そして End 同様に動作します。

8
terdon

http://web.archive.org/web/20120621035133/http://www.ibb.net/~anne/keyboard/keyboard.html のほとんどの情報は、本当に必要なものです。情報の1つの訂正は、それらの提案です(XTermの場合):

*VT100.Translations: #override \
          <Key>BackSpace: string(0x7F)\n\
          <Key>Delete:    string("\033[3~")\n\
          <Key>Home:      string("\033[1~")\n\
          <Key>End:       string("\033[4~")
*ttyModes: erase ^? 

これにより、XTermは正しい文字を送信し、バックスペースを^?としてsttyを変更しますが、場合によっては誤って^Hをバックスペースとして報告し、Vim instertモードのバックスペースを壊します(ここを参照) : https://bugs.gentoo.org/15409 )。これを回避するには、代わりにVT100.backarrowKey: falseを使用してください。

*VT100.backarrowKey: false
*VT100.Translations: #override \
          <Key>Delete:    string("\033[3~")\n\
          <Key>Home:      string("\033[1~")\n\
          <Key>End:       string("\033[4~")
*ttyModes: erase ^? 

([ここにリンクを挿入してください]も参照))

2
amosonn