Comment faire pour que les touches ctrl-flèche avancent / reviennent d'un mot à la fois dans Cygwin bash?

97

Dans l'installation par défaut de Cygwin, l'utilisation de CTRL-LEFTARROW ou CTRL-RIGHTARROW imprime simplement 5C ou 5D au lieu de sauter un mot à la fois comme prévu.

Les touches Home / End fonctionnent correctement, le remappage doit donc être possible.

À M
la source
Notez que cette question concerne Cygwin, mais peut avoir une application générale sur les systèmes Unix / Linux. Si vous utilisez PuTTY et constatez que les solutions proposées ne vous conviennent pas, jetez un coup d'œil à une question spécifique sur les codes à utiliser pour PuTTY .
palswim
Cela m'est également arrivé sous un Linux complet; sur certains conseils en ligne, j’ai ajouté un ~/.inputrcfichier - qui annulait toutes les valeurs par défaut de Linux Mint. Vous pouvez les récupérer en ajoutant $include /etc/inputrcen haut de votre ~ / .inputrc (en supposant que / etc / inputrc est votre inputrc à l'échelle du système, qu'il est sur Linux Mint)
user208769

Réponses:

134

J'ai trouvé une solution , en la postant ici pour la postérité.

Ajoutez les lignes suivantes à ~/.inputrc( C:\cygwin\home\<username>\.inputrc):

"\e[1;5C": forward-word   # ctrl + right
"\e[1;5D": backward-word  # ctrl + left 

Une fois terminé, vous pouvez appuyer sur C-x C-rpour relire le .inputrcfichier pour la session en cours.

Les choses à noter que si vous voulez d' autres customisations similaires: Utilisation 5Aet 5Bpour flèches haut et bas, et 2xpour les versions décalées.

Les mappages de touches "officielles" sont décrits dans le manuel de référence Bash , mais pour obtenir un moyen rapide de trouver un mappage de touches, sous bash:

  1. type Ctrl+V
  2. tapez la séquence de touches qui vous intéresse (par exemple, Alt+ ). Cela imprimerait^[[1;3C
  3. enlever le fil ^[et le remplacer par \efaire\e[1;3C
  4. Placez cette valeur dans votre .inputrcfichier.
À M
la source
Certains codes de clavier n'apparaissent pas du tout, comme <kbd> Shift </ kbd> + <kbd> Entrée </ kbd>. Comment trouver ces codes de clavier via Mintty / Windows / Cygwin?
CMCDragonkai
14

Vous pouvez recharger le fichier .inputrc via:

bind -f ~/.inputrc

La source

Kdt
la source
2
C'est utile, mais pas vraiment une réponse à la question - peut-être que ce serait mieux comme commentaire à une autre réponse?
Martin Thompson
Ajouté à la réponse de Tom ci
dialogue sur la dovetalk
7

Si vous souhaitez que quelque chose fonctionne sans paramètres d'environnement personnalisés, par exemple lorsque vous travaillez sur un compte partagé sur un serveur ou tout simplement pour limiter le nombre de configurations personnalisées utilisées, Bash dispose pour cela de solutions intégrées qui fonctionnent dans Cygwin.

À savoir Alt+ fpour avancer et Alt+ bpour reculer.

http://www.gnu.org/software/bash/manual/html_node/Commands-For-Moving.html

Costa
la source
4
Merci, bien que je sois au courant de ces clés et les utilise. J'utilise aussi les touches fléchées quand c'est pratique et je ne veux pas qu'elles crachent des codes d'échappement au lieu d'agir sainement et de déplacer le curseur.
Tom
0

Lors de l'utilisation de rxvt avec cygwin, j'ai trouvé la solution à ce lien qui fonctionnait pour moi: control_arrow_keys_in_rxvt .

Ajoutez les lignes suivantes à ~/.inputrc:

"\eOd": backward-word
"\eOc": forward-word
Peter Tran
la source
C'est à ce moment qu'une couche supplémentaire modifie les clés transmises (mais elle ne répond pas à la question posée).
Nikana Reklawyks
0

Cette solution fonctionne également dans les msys2consoles:

"\e[1;5C": forward-word   # ctrl + right
"\e[1;5D": backward-word  # ctrl + left 

Il suffit de placer ces combinaisons de touches dans le .inputrcfichier.

F0nzie
la source