Utilisation des touches ctrl-flèche avec PuTTY et screen

33

J'ai cherché et n'ai pas pu trouver de solution pour cela nulle part. J'utilise PuTTY sous Windows pour me connecter à divers serveurs sur lesquels je lance bash et screen. Il semble que bash fonctionne bien avec les touches ctrl-flèche pour passer d'un mot à l'autre sur la ligne de commande, mais cela ne fonctionne pas à l'écran. Pas à l'écran, ctrl-gauche envoie "^ [OC et ctrl-droite est" ^ [OD ". Dans l'écran, j'obtiens plutôt" ^ [[C "et" ^ [[D ", ce qui semble être les codes pour les touches fléchées gauche / droite. Existe-t-il un moyen de faire en sorte que l'écran reconnaisse les touches ctrl-flèche lors de l'utilisation de PuTTY?

UPDATE: Il semble que PuTTY soit le problème car il n'envoie pas les codes d'échappement nécessaires pour que cela fonctionne. J'abandonne pour l'instant et utilise Cygwin + menthe.

kbosak
la source
Wow, mintty is great - recherche depuis quelque temps un émulateur de terminal décent pour Windows. Merci pour ça.
blueyed
Cependant, je reçois ^[[1;5Apour Ctrl-Up, ce qui semble être plus correct, selon code.google.com/p/mintty/wiki/Keycodes#Cursor_keys
blueyed le

Réponses:

13

Modifier:

Voici ce qui a fonctionné pour moi:

  • Mes ~/.bashrcsets TERM=xterm(le mien se trouve être TERM=xterm-256colors) écrasant l'écranTERM=screen
  • Je mets PuTTY> Terminal> Fonctions> Désactiver le mode des touches de curseur d'application sur coché
  • J'entre tput smkxau prompt Bash
  • Maintenant, les touches Ctrl-Flèche sautent mot par mot

  • Pour information, si je le fais:
    tput smkx | hexdump -c
    je reçois
    0000000 033 [ ? 1 h 033 =
    et
    tput rmkx | hexdump -c
    me donne
    0000000 033 [ ? 1 l 033 >

Je pense qu'il y a moyen de transformer cela en quelque chose d'un peu mieux, mais c'est ce que j'ai jusqu'à présent et cela semble fonctionner.

Réponse originale:

De info screen:

Chaque fenêtre d’une session «écran» émule un terminal VT100, avec quelques fonctions supplémentaires ajoutées. L'émulateur VT100 est codé en dur, aucun autre type de terminal ne peut être émulé.

Et les VT100 n'ont pas de code clé Ctrl-Flèche.

En pause jusqu'à nouvel ordre.
la source
set -o vi(si vous êtes ce genre de personne :)
MikeyB
1
@ MikeyB: Comment cela aide-t-il (ça n'aide pas, au fait)?
pause jusqu'à nouvel ordre.
Merci. Ce n'est pas la réponse que j'espérais, mais je peux maintenant passer à autre chose et vivre avec cette limitation ou utiliser une autre liaison de clé.
kbosak
1
@ Dennis: Eh bien, cela vous donne une autre façon de gérer l’avancée / l’arrière si vous êtes la typo de la personne qui peut l’envelopper. set -o viactive le mode de ligne de commande vi afin que vous puissiez appuyer ESCsur les touches vi et les utiliser pour vous déplacer et modifier votre ligne de commande.
MikeyB
1
@kbosak: Je ne suis pas content de cette réponse non plus. C'est pourquoi je l'ai réparé . :-)
pause jusqu'à nouvel ordre.
23

Comme mentionné ici , vous pouvez mettre ~ / .inputrc:

"\eOD": backward-word
"\eOC": forward-word

Cela a fonctionné pour moi.

Fayer Michael
la source
5
Cela a fonctionné pour moi et était beaucoup plus facile que la réponse acceptée.
Petrus Theron
Cela a fonctionné pour moi aussi, alors que la réponse acceptée ne le faisait pas
Schiavini
+1 réponse succincte qui fonctionne.
Adam Caviness
3
Assurez-vous d’avoir $include /etc/inputrcen haut de votre .inputrcfichier, sinon readline ne lira pas les liaisons à l’échelle du système et des clés telles que Home et End se briseront.
James
1
Cela devrait être la réponse acceptée!
Shailen
4

Je suis un peu surpris que Putty envoie correctement les touches ctrl-flèche, même sans utiliser d'écran, car cela n'a jamais fonctionné pour moi. Ma solution a été de passer à l'utilisation de alt-arrowkeys (méta-flèche-touches), qui, à mon avis, ont la même liaison mot précédent / mot précédent pour bash par défaut, bien que je devais émettre deux commandes supplémentaires pour que zsh les reconnaisse:

bindkey "^ [^ [[C" mot-clé # Meta-RightArrow
bindkey "^ [^ [[D" en arrière-mot # Meta-LeftArrow
Zed
la source
Je peux aussi aller dans cette voie. La touche ctrl gauche est tellement plus facile à frapper que les touches méta ou alt (du moins sur mon clavier). Tant pis.
kbosak
4

Si d’autres trouvent cette vieille question comme moi, solution plus récente:

Les touches Ctrl et Flèches ne fonctionnent pas dans le mastic! Que fais-je?

putty inverse le sens du mode de touche curseur sur ctrl, ce qui est un peu difficile à détecter correctement par tmux. Pour que les touches ctrl soient correctes, modifiez les paramètres terminfo afin que kUP5 (Ctrl-Up, etc.) soient les versions ajustées, et désactivez smkx / rmkx pour que tmux ne modifie pas le mode. Par exemple, avec cette ligne dans .tmux.conf (en supposant que TERM soit défini sur xterm):

set -g terminal-overrides "xterm *: kLFT5 = \ eOD: kRIT5 = \ eOC: kUP5 = \ eOA: kDN5 = \ eOB: smkx @: rmkx @"

Notez que cela ne fonctionnera que dans tmux 1.2 et supérieur.

http://stuff.mit.edu/afs/athena/project/bsd/src/tmux-1.3/FAQ

Collin Grady
la source
0

Vous devriez consulter la documentation de terminfo, ncurses, screen et putty si vous voulez déboguer / configurer correctement. Des raccourcis bash peuvent également être configurés avec inputrc. Examinez les pages de manuel de bash et recherchez inputrc.

Mircea Vutcovici
la source
Je ne pense pas que le problème est ce qui est dans inputrc. J'ai déjà essayé plusieurs solutions possibles consistant à insérer des entrées dans inputrc sans succès. Là encore, il apparaît que le code incorrect est envoyé à l'écran pour les touches Ctrl + Flèche. De plus, je ne veux pas dépenser plus de temps que cela, mais c'est juste un inconvénient mineur.
kbosak
0

Avez-vous le bon encodage de caractères dans Putty? Si vous vous connectez à un serveur dans UTF-8 et que votre mastic est en jeu de caractères standard, dans vim, les touches de direction sont écrites. Si Putty est en UTF-8, vous pouvez déplacer votre curseur. Peut-être que c'est la même chose dans votre cas ...

Dom
la source
Ce n'est pas du tout un problème de vi / vim et je n'ai vu qu'une seule option dans PuTTY pour le jeu de caractères, ce qui n'a pas aidé.
kbosak
Essayez les différentes options dans Terminal-> Clavier-> Les touches de fonction et le clavier. BTW, pour moi, Ctrl-Arrow ne fonctionne pas non plus en bash, il fait la même chose que sans appuyer sur Ctrl.
Moriarty le
Oui, j'ai essayé autant d'options et de combinaisons d'options sans aucune chance. Pour votre information, il y a quelques entrées que vous pouvez mettre dans inputrc pour aider avec les touches ctrl-flèche dans bash, mais elles ne vous aident pas en utilisant screen.
kbosak
0

Dans votre configuration de mastic sous Terminal -> Caractéristiques, il y a quelques cases à cocher "désactiver". Vous voudrez peut-être essayer de désactiver les touches du curseur de l’application ou le mode du clavier de l’application; parfois, putty essaie d’être "trop ​​intelligent" et envoie des caractères de contrôle qui ne sont pas compatibles avec le serveur.

tylerl
la source
0

J'utilise le Terminal> Clavier> Touches de fonction> Xterm R6. Cela aide les touches de fonction htop (recherche f4, etc.) à fonctionner comme prévu.

Ce que j'ai découvert, c'est qu'au lieu d'utiliser CTRL + flèche, ALT + flèche saute les mots à la place.

Dan
la source