Bash, comment réparer globalement ^ H et ^? problèmes de retour arrière

12

Je voudrais résoudre ce problème fréquent où le shell sur un serveur distant pense que la clé de retour arrière de mon terminal est ^?et parfois il pense que c'est le cas ^H, et se trouve être incorrect et génère le mauvais caractère lorsque j'appuie sur le retour arrière. Si je le règle sur ^ H ou ^? avec stty erase ^Hou stty erase ^?dans mon fichier .bashrc, et utiliser un autre terminal pour accéder au serveur, il finit souvent par se tromper. Je suis donc obligé de taper manuellement stty erase [whatever]pour le corriger lorsque je remarque que la touche de retour arrière est incorrecte.

Ce que j'aimerais faire, c'est lier les deux ^?et ^Hrevenir en arrière, car si je peux le faire, je peux simplement l'ajouter à tous mes fichiers .bashrc, et cela mettra certainement fin à ce cauchemar. Est-ce possible? Si c'est le cas, comment?

fragsworth
la source

Réponses:

8

Cette page contient toutes les informations dont vous aurez besoin sur cette question; Je vous suggère de le lire. Maintenant, si vous utilisez bash, il devrait suffire de créer un ~/.inputrcfichier contenant ces lignes:

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

En prime, ils feront Homeet Endfonctionneront également.

terdon
la source
2

La plupart des informations contenues dans http://web.archive.org/web/20120621035133/http://www.ibb.net/~anne/keyboard/keyboard.html sont en effet ce dont vous avez besoin. Une correction à l'information, est de leur suggestion (pour 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 ^? 

Bien que cela permette à XTerm d'envoyer le bon caractère et de changer stty pour avoir un retour arrière ^?, il sera toujours signalé à tort ^Hcomme retour arrière dans certaines occasions, cassant par exemple le retour arrière en mode instim Vim (voir ici: https://bugs.gentoo.org / 154090 ). Pour éviter cela, utilisez VT100.backarrowKey: falseplutôt, donc:

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

(voir aussi [veuillez insérer le lien ici])

amosonn
la source
Lisez "Pourquoi ai-je besoin de 50 points de réputation pour commenter" pour vous assurer de comprendre comment vous pouvez commencer à commenter.
Pimp Juice IT
Je n'ai demandé aucune clarification à personne. J'apportais plutôt des éclaircissements et une correction mineure à la réponse ci-dessus. Mais, si cela est plutôt documenté dans une réponse, tant pis. J'ai ajouté le texte autour pour en faire une réponse complète.
amosonn
De plus, ce lien manque dans ma réponse, mais je ne peux pas l'ajouter ici. wiki.archlinux.org/index.php/Xterm#Fix_the_backspace_key
amosonn