Comment réparer les flèches Ctrl + dans Vim?

26

J'utilise le Putty -> Suse box -> vim 7.2combo pour l'édition et je souhaite remapper le combo Ctrl + flèches à une tâche particulière. Mais pour une raison quelconque, Vim ignore le raccourci et passe en mode d'insertion et insère le caractère "D" (pour la gauche) de "C" (pour la droite).

Quelle partie de la configuration de mon clavier / terminal est à blâmer et comment y remédier?

Alex B
la source
PuTTY n'envoie pas de séquences distinctes utiles pour les flèches de contrôle. Aucune des réponses suggérées n'est correcte (ou utile).
Thomas Dickey

Réponses:

27

Déterminez exactement la séquence d'échappement que votre terminal envoie pour la Ctrlflèche + en tapant Ctrl+ V, Ctrl+ flèche en mode insertion: cela insérera littéralement le premier ESCcaractère (affiché comme ^[dans vim), suivi du reste de la séquence d'échappement. Parlez ensuite à vim de ces séquences d'échappement avec quelque chose comme

map <ESC>[5D <C-Left>
map <ESC>[5C <C-Right>
map! <ESC>[5D <C-Left>
map! <ESC>[5C <C-Right>

Je semble me rappeler que Putty a un paramètre par défaut pour le mode Clés de curseur d'application qui n'est pas pratique (j'oublie pourquoi), vous voudrez peut-être d'abord basculer ce paramètre.

Notez que bien que les séquences d'échappement varient entre les terminaux, les conflits (c'est-à-dire une séquence d'échappement qui correspond à différentes clés dans différents terminaux) sont rares, il n'est donc pas particulièrement nécessaire d'essayer d'appliquer les mappages uniquement sur un type de terminal particulier.

Gilles 'SO- arrête d'être méchant'
la source
Comment savoir quelle séquence d'échappement est envoyée?
Alex B
@Alex: J'ai essayé de clarifier mon explication, plaignez-vous si vous ne comprenez toujours pas ma première phrase.
Gilles 'SO- arrête d'être méchant'
Vous pouvez également exécuter od -aou od -csi vous creusez octal puis tapez les clés en question. Voir "ajouté" dans ma réponse pour un exemple.
msw
Désolé de revenir à cette question si tard, mais j'ai compris que PuTTY envoie toujours les touches de curseur d'application au terminal, même après l'avoir complètement éteint . Je ne sais quoi d'autre que je devrais modifier pour le faire disparaître.
Alex B
@Alex: Vous n'avez pas besoin de le faire disparaître, vous pouvez en parler à vos applications (ce que j'ai trouvé être le chemin de la moindre résistance). Ou vous pouvez remplacer PuTTY par l'une des alternatives telles que mintty plus Cygwin ssh (mais cela devient hors sujet pour ce site).
Gilles 'SO- arrête d'être maléfique'
7

Votre meilleur pari est probablement de regarder la configuration du mode Touches de curseur d'application de PuTTY .

Les séquences par défaut sont envoyées ESCsous forme de préfixe et sont [suivies de Append ou de Change ou d'autres éléments vous plaçant en mode insertion.

ajouté, après Gilles

Une version légèrement plus explicite de l'échappement ^ V peut être vue avec od (1). Voici moi tapant ^ Haut, ^ Bas, ^ Droite, ^ Gauche sur mon terminal:

$ od -a
0000000 esc   [   1   ;   5   A esc   [   1   ;   5   B esc   [   1   ;
0000020   5   C esc   [   1   ;   5   D

Donc mon terminal envoie ^[[1;5Aquand j'appuie sur Ctrl+

msw
la source
La désactivation du mode Clés de curseur d'application ne semble pas aider.
Alex B
0

pour mon ceci et d'autres problèmes de clavier vim je fais simplement

vim ~/.vimrc
set nocompatible
zainengineer
la source