Bash, bagaimana cara memperbaiki ^ H dan ^ secara global? masalah backspace


12

Saya ingin memperbaiki masalah yang sering terjadi di mana shell pada server jauh berpikir kunci backspace terminal saya ^?dan kadang-kadang berpikir itu ^H, dan kebetulan salah dan menampilkan karakter yang salah ketika saya menekan backspace. Jika saya atur ke ^ H atau ^? dengan stty erase ^Hatau stty erase ^?dalam file .bashrc saya, dan menggunakan beberapa terminal lain untuk mengakses server, seringkali berakhir salah. Jadi saya terjebak harus mengetik secara manual stty erase [whatever]untuk memperbaikinya ketika saya melihat kunci backspace salah.

Yang ingin saya lakukan adalah mengikat keduanya ^?dan ^Hmundur, karena jika saya bisa melakukan ini, saya bisa menambahkannya ke semua file .bashrc saya, dan itu pasti akan mengakhiri mimpi buruk ini. Apakah ini mungkin? Jika ya, bagaimana caranya?

Jawaban:


8

Halaman ini memiliki semua informasi yang Anda perlukan tentang masalah ini; Saya sarankan Anda membacanya. Sekarang, jika Anda menggunakan bash, itu harus cukup untuk membuat ~/.inputrcfile yang berisi baris-baris ini:

"\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

Sebagai bonus tambahan, mereka akan membuat Homedan Endbekerja juga.


2

Sebagian besar informasi di http://web.archive.org/web/20120621035133/http://www.ibb.net/~anne/keyboard/keyboard.html memang yang Anda butuhkan. Salah satu koreksi terhadap informasi, adalah saran mereka (untuk 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 ^? 

Walaupun ini akan membuat XTerm mengirim karakter yang tepat, dan mengubah stty untuk memiliki backspace sebagai ^?, ia masih akan melaporkan secara misterius ^Hsebagai backspace dalam beberapa kesempatan, melanggar ie backspace dalam mode insting Vim (lihat di sini: https://bugs.gentoo.org / 154090 ). Untuk menghindari ini, gunakan VT100.backarrowKey: falsesebaliknya, jadi:

*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 ^? 

(lihat juga [silakan masukkan tautan di sini])


Baca "Mengapa saya perlu 50 reputasi untuk berkomentar" untuk memastikan Anda memahami bagaimana Anda dapat mulai berkomentar.
Pimp Juice,

Saya tidak memerlukan klarifikasi dari siapa pun. Sebaliknya, saya memberikan klarifikasi dan koreksi kecil untuk jawaban di atas. Tapi, jika ini agak didokumentasikan dalam jawaban, biarlah. Saya menambahkan teks sekitar sehingga menjadi jawaban lengkap.
Amosonn

Juga, tautan ini hilang dari jawaban saya, tetapi saya tidak dapat menambahkannya di sana. wiki.archlinux.org/index.php/Xterm#Fix_the_backspace_key
amosonn
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.