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?

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.


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])


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.