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

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

Quelle partie de ma configuration keyboard / terminal est à blâmer et comment le réparer?

Déterminez exactement la séquence d'échappement que votre terminal envoie pour Ctrl + flèche en tapant Ctrl + V , Ctrl + flèche en mode insertion: ceci inserta le caractère principal d' ESC (représenté par ^[ dans vim) littéralement, suivi du rest de l'échappement séquence. Ensuite, dites à vim 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 me souviens que Putty a un paramètre par défaut pour le mode Application Cursor Keys qui est peu pratique (j'oublie pourquoi), vous pouvez d'abord changer 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 keys dans différents terminaux) sont rares, il n'est donc pas nécessaire d'appliquer les mappages uniquement sur un type de terminal particulier.

Votre meilleur pari est probablement de regarder la configuration du mode Application Cursor Keys de PuTTY.

Les séquences par défaut envoient ESC en tant que préfixe et [ suivi de A ppend ou C hange ou d'autres choses vous jetant en mode insertion.

a ajouté, après Gilles

Une version légèrement plus explicite de l'échappement ^ V peut être vue avec od (1). Voici que je tape ^ Up, ^ Down, ^ Right, ^ Left à 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;5A quand j'appuie sur Ctrl +

J'ai trouvé une meilleure solution ici: http://vim.wikia.com/wiki/Fix_arrow_keys_that_display_A_B_C_D_on_remote_shell

Il suffit de mettre cette string dans votre file .vimrc :

 :set term=cons25 

Mettre à jour

Copiez ce file dans votre /home , en le renommant .vimrc :

 /usr/share/vim/vim_VERSION_/vimrc_example.vim