Pourquoi vim retarde-t-il une seconde chaque fois que j'utilise la commande 'O' (ouvrir une nouvelle ligne ci-dessus et l'insérer)?

26

Lorsque j'utilise la plupart des commandes, elles prennent effet instantanément. Lorsque j'utilise la Ocommande, cependant, je vois le "O" remplacer le caractère actuel pendant environ une seconde, puis le caractère actuel revient et une nouvelle ligne est insérée et ouverte.

Je n'ai aucun problème avec la ocommande (ouvrez une nouvelle ligne ci - dessous et insérez).

Si cela fait une différence, j'utilise à vimpartir de bash, dans le terminal Gnome sur Ubuntu 10.04.

Matthieu
la source

Réponses:

27

Si la touche précédente enfoncée était ESC, c'est parce qu'il existe des touches qui peuvent générer des séquences d'échappement commençant par ESC O. Par exemple, selon le mode de la touche de curseur, la flèche vers le haut peut générer la séquence d'échappement ESC O A.

S'il voit une séquence d'échappement partielle, vim attendra un court délai pour voir si un autre caractère est reçu qui correspond à l'une des séquences d'échappement définies pour votre type de terminal. Sinon, les caractères seront traités comme des touches distinctes. Vous pouvez tester cela en entrant un A majuscule en attendant que la ligne s'ouvre pour voir si elle la traite plutôt comme une flèche vers le haut.

Il existe certains paramètres vim qui peuvent être utilisés pour contrôler cela. :set ttimeoutlen=100changera le délai d'expiration de la séquence d'échappement à 100 ms. :set noesckeysdésactivera complètement la reconnaissance des clés envoyant une séquence d'échappement en mode insertion. De plus, le mode compatible vi n'aura pas ce problème car les touches d'échappement sont désactivées dans ce mode - c'est pourquoi cela vim -u NONEfonctionne.

mark4o
la source
Juste pour clarifier, mon "expérience" avec le fichier de ligne 140k était en mode vim complet avec mon complément standard de plug-ins et de types de fichiers. Je peux voir où vous pourriez avoir conclu que j'avais utilisé, -u NONEmais nous n'avons toujours pas de confirmation du PO.
msw
Hou la la! c'était un peu irritant depuis un moment mais je n'y ai jamais pensé. est parfaitement logique maintenant. Esc OA fonctionne en effet comme une flèche vers le haut.
Vitaly Kushner
2
:set noesckeysn'est probablement pas ce que vous voulez - définissez-le puis appuyez sur les touches fléchées en mode insertion, même si vous ne prévoyez pas de les utiliser, vous ne voulez pas qu'ils le fassent! noesckeys n'accélère pas non plus les choses en dehors du mode d'insertion. ttimeoutlenest définitivement la voie à suivre
JonnyRaa