Question Comment configurer PuTTY pour que Home / End / PgUp / PgDn fonctionne correctement dans bash?


Les touches Home, End, PageUp, PageDown tout type a ~ dans ma session bash au lieu de déplacer le curseur / vue autour. Pourquoi cela se produit-il et quels paramètres dois-je modifier?

GNU bash, version 4.0.28(1)-release (x86_64--netbsd)
PuTTY v0.60

La question se lisait à l'origine:

Dans PuTTY, pourquoi appuyer sur la touche "Home" sur le shell (bash) tapez-vous un "~"? Ou plutôt, comment le faire déplacer le curseur au début de la commande que j'ai tapé?

(Je pensais que la raison était que ~ est le maison répertoire, mais les réponses disent que ce n'est pas le cas.)


109
2018-01-11 16:48


origine




Réponses:


Modifiez la chaîne de type terminal sous l'onglet Connexion> Données de la valeur par défaut "xterm" à "linux". Cela a fonctionné pour moi.

enter image description here


133
2018-02-02 22:54



Merci! J'ai eu ce problème après avoir créé Ctrl Left / Right en utilisant cette méthode (superuser.com/a/103097/45410). - Edwin Yip
Accent: pas Terminal -> Keyboard "Les touches de fonction et le clavier". - Elazar
Cela fonctionne mais crée d'autres problèmes comme la désactivation du support de la souris. alors, ce n'est pas une solution acceptable pour moi - Anton
Cette solution active également les trémas dans le mastic lors de la connexion à OS X! - lorem monkey


Cela se produit car vous ne définissez pas correctement le type de terminal de PuTTY ou que les définitions terminfo correctes ne sont pas installées sur votre serveur.

Sur les systèmes basés sur Debian, le ncurses-term package (version 5.7 + 20081213-1) inclut des fichiers de définition terminfo pour mastic, mastic-256color et putty-vt100 types de terminaux. Si vous avez ce paquet installé, vous pouvez définir la "Chaîne de type terminal" sur "putty" au lieu de "xterm" par défaut dans la configuration de session de Putty (Connection -> Data).

Stephen Irons mentionne également "linux" comme un autre type de terminal qui fonctionne; Je crois que c'est correct de l'expérience antérieure, mais je ne l'ai pas testé récemment.

Sur mes systèmes, cela permet à Home et End de fonctionner correctement, même si PageUp / PageDown ne fait pas défiler la fenêtre de la console. (Ils fonctionnent correctement dans les applications ncurses comme aptitude, et Shift-PgUp / Shift-PgDn font défiler la fenêtre de la console.)


39
2018-02-03 00:21



Oui, en utilisant TERM=putty ou TERM=putty-256color est le plus sage, mais malheureusement pour le moment, ce dernier ne semble pas fonctionner correctement pour les couleurs 8-15 (qui sont supposées être les versions brillantes de 0-7). Les autres "solutions" sont très susceptibles de se dissiper, parfois en raison de leur mépris flagrant des différences entre les terminaux concernés. - SamB
yum install ncurses-term trié pour moi sur CentOS 7 avec du mastic lors de la prochaine connexion, merci. - Wandering Zombie
réglage du type de terminal à putty fonctionne mais brise le support de souris de type xterm (par exemple pour Midnight Commander) - Anton
L'installation de 'ncurses-term' a fonctionné pour moi lors des tests Debian. - hochl
rien de tout cela ne fonctionne pour moi, je suis en train de me connecter au centos, et je ne peux pas lancer yum install-term parce que je ne suis pas root. - Herman Toothrot


Si vous voulez vérifier quel code est envoyé par PuTTY à votre terminal lorsque vous appuyez sur une touche ou une combinaison de touches, vous devez simplement émettre un Ctrl+V puis appuyez sur la touche souhaitée.

Par exemple sur ma boite, en appuyant sur la Accueil La clé générera la chaîne suivante sur mon terminal:

^[[1~

Cela signifie que PuTTY envoie le caractère d'échappement ^ [ suivi de la chaîne [1 ~.

Vous pouvez créer un ~/.inputrc déposer dans votre $HOME dossier, ou alternativement un /etc/inputrc fichier en fonction de votre système. Remplissez ensuite ce fichier avec les codes PuTTY et les actions Bash correspondantes que vous souhaitez déclencher avec Bash.

Remarque: remplacer tous les ^ [ personnage par équivalent \ e chaîne

Dans mon exemple, je vais ajouter une ligne avec mon Accueil code clé et le début de ligne action (qui par défaut est liée à Ctrl+A dans Bash):

"\e[1~": beginning-of-line

Pour info, mon fichier inputrc a le contenu suivant:

set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
"\e[1~": beginning-of-line     # Home key
"\e[4~": end-of-line           # End key
"\e[5~": beginning-of-history  # PageUp key
"\e[6~": end-of-history        # PageDown key
"\e[3~": delete-char           # Delete key
"\e[2~": quoted-insert         # Insert key
"\eOD": backward-word          # Ctrl + Left Arrow key
"\eOC": forward-word           # Ctrl + Right Arrow key

De @Cimbali: Plus de commandes pouvant être liées (comme l'historique précédent: passer à travers la liste d'historique) disponible sur cette page de référence.


17
2017-09-26 21:59



OUI ! Finalement ! La chaîne de type terminal de Putty n'a rien fait pour les mots en amont et en aval. C'est bien ! - Cimbali
C'est la seule solution acceptable car TERM=linux ou TERM=putty casser le support de souris de type xterm. Merci! - Anton


Crtl + A vous emmène au début de la ligne

Voici un liste des raccourcis clavier Bash


13
2018-01-11 17:02



C'est génial et tout, mais Home / End est câblé dans mon cerveau, et comme je ne gère le serveur qu'une seule fois dans une lune bleue, les chances de désapprendre le câblage sont minces. - RomanSt


Ce qu'il envoie en fait, c'est ^[[1~qui est une séquence d'échappement terminale composée de:

  • ^ [- échapper
  • [- crochets à gauche
  • 1 un
  • ~ - tilde

Vous pouvez le voir en appuyant sur Ctrl+V puis Accueil.

Vous pourrez peut-être résoudre votre problème en modifiant le paramètre du clavier PuTTY pour les touches Accueil et Fin en rxvt (ce qui rend la séquence d'échappement ^[[H ou en modifiant le $ TERM que vous utilisez (ou en éditant ~/.inputrc).

Par ailleurs, il n’ya aucune relation entre le tilde que vous obtenez lorsque vous appuyez sur Accueil et le tilde qui représente le répertoire de base. Par exemple, dans ma configuration Bas de page produit ^[[6~ qui imprimerait également un tilde s’il n’était pas correctement interprété.


9
2018-01-11 16:58



Merci! rxvt a corrigé la touche Home; la touche Fin produit maintenant un ding. PgUp / Down fait en effet taper ~, et aucun des paramètres du clavier PuTTY ne les fait fonctionner. Est-ce que ma bash est foutue ou est-ce "normal"? - RomanSt
Qu'obtenez-vous quand vous tapez echo $TERM? - Dennis Williamson
xterm (Limite de 15 caractères argh) - RomanSt
Vous pouvez essayer d'ajouter "\eOw": end-of-line (c'est une lettre majuscule O) à votre ~/.inputrcfichier. - Dennis Williamson
Touche de fin fixe; Je comprends l'idée. Vraiment souhaiter que ce genre de piratage ne soit pas nécessaire si ... - RomanSt


Aucune de ces options n'a fonctionné pour moi. Je gère un ancien système AIX. J'ai dû ajouter les alias suivants à mon fichier .profile

alias __A=$(print '\0020') # ^P = up = previous command
alias __B=$(print '\0016') # ^N = down = next command
alias __C=$(print '\0006') # ^F = right = forward a character
alias __D=$(print '\0002') # ^B = left = back a character

2
2018-01-22 22:22



ne fonctionne pas pour moi, déception - Herman Toothrot


Je ne pouvais pas le faire fonctionner avec d'autres méthodes. J'ai cependant créé ce script AutoHotkey qui fonctionne, tant que votre shell est Bash:

#IfWinActive ahk_class PuTTY
PgUp::Send +{PgUp}
PgDn::Send +{PgDn}
Home::Send ^a   ; beginning of line
End::Send ^e    ; end of line
+^Del::Send ^k  ; delete whole line after cursor
+End::Send ^k   ; delete whole line after cursor
+Home::Send ^u  ; delete whole line before cursor
^Del::Send !d   ; delete word after cursor
^BS::Send ^w    ; delete word before cursor
^Left::Send !b  ; jump word left
^Right::Send !f ; jump word right
#IfWinActive

Utiliser avec précaution cependant, toutes les touches de raccourci bash ne fonctionnent pas dans d'autres programmes.


1
2018-04-01 20:41



Cela gâcherait la raison principale pour laquelle je regarde ceci: screen, qui avec les paramètres par défaut, brise Ctrl-A car il l'utilise comme caractère d'échappement .... - Gert van den Berg