Bash, ¿cómo arreglar globalmente ^ H y ^? problemas de retroceso


12

Me gustaría solucionar este problema frecuente en el que el shell en un servidor remoto cree que la tecla de retroceso de mi terminal es ^?y, a veces, piensa que es ^Hy resulta incorrecta y muestra el carácter incorrecto cuando presiono la tecla de retroceso. Si lo configuro en ^ H o ^? con stty erase ^Ho stty erase ^?en mi archivo .bashrc, y utilizo alguna otra terminal para acceder al servidor, a menudo termina mal. Así que estoy atascado teniendo que escribir manualmente stty erase [whatever]para arreglarlo cuando noto que la tecla de retroceso está mal.

Lo que me gustaría hacer es vincular ambos ^?y ^Hretroceder, porque si puedo hacer esto, puedo agregarlo a todos mis archivos .bashrc, y ciertamente terminará con esta pesadilla. es posible? ¿Si es así, cómo?

Respuestas:


8

Esta página tiene toda la información que necesitará sobre este tema; Te sugiero que lo leas. Ahora, si está utilizando bash, debería ser suficiente para crear un ~/.inputrcarchivo que contenga estas líneas:

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

Como una ventaja adicional, harán Homey Endfuncionarán también.


2

La mayor parte de la información en http://web.archive.org/web/20120621035133/http://www.ibb.net/~anne/keyboard/keyboard.html es de hecho lo que necesita. Una corrección de la información es su sugerencia (para 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 ^? 

Si bien esto hará que XTerm envíe el carácter correcto y cambie stty para que tenga un espacio de retroceso como ^?, todavía informará erróneamente ^Hcomo espacio de retroceso en algunas ocasiones, rompiendo, por ejemplo, el espacio de retroceso en el modo de inserción Vim (ver aquí: https://bugs.gentoo.org / 154090 ). Para evitar esto, use VT100.backarrowKey: falseen su lugar, entonces:

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

(vea también [inserte el enlace aquí])


Lea "¿Por qué necesito 50 reputación para comentar?" Para asegurarse de que comprende cómo puede comenzar a comentar.
Pimp Juice IT

No exigí ninguna aclaración de nadie. Más bien, estaba proporcionando una aclaración y una corrección menor a la respuesta anterior. Pero, si esto está bastante documentado en una respuesta, que así sea. Agregué el texto alrededor para que sea una respuesta completa.
amosonn

Además, falta mi enlace en mi respuesta, pero no puedo agregarlo allí. wiki.archlinux.org/index.php/Xterm#Fix_the_backspace_key
amosonn
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.