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


12

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

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

回答:


8

このページには、この問題で必要になるすべての情報が含まれています。読むことをお勧めします。ここで、を使用している場合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

追加のボーナスとして、彼らは同様に働きHomeEnd働きます。


2

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 / 154090)。これを回避する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 ^? 

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


「コメントするには50の評判が必要な理由」を読んで、コメントを開始する方法を理解してください。
ピンプジュースIT

誰からの説明も必要としませんでした。むしろ、私は上記の答えを明確にし、小さな修正を提供していました。しかし、これが回答でかなり文書化されている場合は、そうしてください。周辺テキストを追加して、完全な回答にしました。
アモソン

また、このリンクは私の回答にはありませんが、そこに追加することはできません。wiki.archlinux.org/index.php/Xterm#Fix_the_backspace_key
amosonn
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.