3 votes

Bash backspace supprimant un mot à la fois

Il y a un serveur à mon travail qui utilise csh comme Shell par défaut. Je préfère bash, donc à chaque fois que je me connecte, je lance bash .

Mais pour une raison quelconque, le bouton d'effacement arrière supprime des mots complets au lieu de supprimer uniquement des caractères. Comment cela se fait-il ? Comment puis-je changer cela et faire en sorte que la touche Bksp supprime les caractères les uns après les autres ?

Pour info, Shift+Bksp supprime caractère par caractère. Si possible, j'aimerais que Shift+Bksp supprime mot par mot. Seulement si c'est possible.

Gracias

PS : Ne me dites pas de tenir la touche "shift" ; c'est carrément ennuyeux.

3voto

Certains terminaux envoient ^h (caractère numéro 8) pour le BackSpace et d'autres envoient ^? (caractère numéro 127). De nombreux émulateurs de terminal peuvent être configurés, et la plupart des programmes peuvent être configurés pour savoir quelle touche attendre. Il est évident que les deux parties doivent se mettre d'accord.

Stty est un moyen par lequel les applications peuvent interroger la configuration du terminal. erase = ^? signifie que le fichier de description de votre terminal sur le serveur affirme que lorsque votre terminal envoie ^? cela signifie "effacer le caractère précédent". werase = ^? signifie que ^? signifie "effacer le mot précédent". Il y a une contradiction entre ces deux paramètres.

Lorsque vous vous connectez par ssh, le client ssh envoie un nom pour le terminal, qui est placé dans le fichier de configuration du terminal. TERM variable d'environnement. Les programmes du serveur recherchent ensuite les descriptions du terminal dans une base de données (appelée termcap ou terminfo). Si ces descriptions sont cassées, ou si un fichier de configuration quelque part (tel que /etc/profile o ~/.login o ~/.bashrc ) remplace les descriptions par des données erronées, vous risquez de vous retrouver avec un décalage. Par exemple, une source possible de votre problème est qu'un fichier d'initialisation contient la commande stty werase '^?' (forçage ^? pour signifier un effacement de mot) pendant que votre terminal envoie ^? pour la touche de retour en arrière.

L'idéal est de résoudre le conflit, car de nombreux programmes lisent ces informations.

Dans Putty, vous pouvez configurer les éléments suivants ^? o ^h le site BackSpace la clé envoie. Vérifiez la valeur de ce paramètre. La façon la plus simple de résoudre votre problème est peut-être de faire en sorte que Putty envoie ^h para BackSpace et assurez-vous que le serveur utilise ce paramètre ( stty erase '^h' à mettre en place ~/.bashrc le forceront).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X