Les touches fléchées cessent spontanément de fonctionner dans vim


25

J'ai récemment mis à niveau OS X 10.6 (je pense) vers 10.9. Depuis lors, il semble que lors de l'édition vim, les touches fléchées cessent «spontanément» de fonctionner.

À un moment donné, dans la frustration, j'ai "écrasé" l'une des touches fléchées et on m'a finalement montré une erreur "E388 Impossible de trouver une définition". Toutes les autres fois que je l'ai vécu, les flèches, après avoir travaillé pendant un certain temps, se mettent soudain à me tinter !

Quitter et rouvrir résout temporairement le problème . Mais j'aimerais l' empêcher !

Quelqu'un sait ce que cela pourrait être? Et comment y remédier?


Il semble que ma valeur par défaut ait vimrcété modifiée lors de la mise à jour. Si ma mémoire est correcte, c'était un assez gros fichier auparavant. Maintenant, il contient juste ceci:

" Configuration file for vim
set modelines=0         " CVE-2007-2438

" Normally we use vim-extensions. If you want true vi-compatibility
" remove change the following statements
set nocompatible        " Use Vim defaults instead of 100% vi compatibility
set backspace=2         " more powerful backspacing

" Don't write backup file if vim is being called by "crontab -e"
au BufWrite /private/tmp/crontab.* set nowritebackup
" Don't write backup file if vim is being called by "chpass"
au BufWrite /private/etc/pw.* set nowritebackup

Je ne sais pas encore ce que font ces options. Je vais y jeter un œil - mais j'espère que quelqu'un ici en sait plus rapidement que je ne peux google et lire ...


Je viens également de réaliser qu'il y a ici un forum centré sur Apple auquel cette question pourrait être mieux adaptée. Donc, si c'est plus probablement une condition d'OS X que vim, peut-être qu'un mod pourrait migrer cela pour moi.
svidgen

2
Ça me rappelle de travailler sur un ordinateur central "Prime" au collège. Le professeur a enseigné que vous ne devez jamais utiliser les touches fléchées vi. Utilisez toujours hjkl. C'est là que les touches "fléchées" se trouvent sur du matériel ancien.
Red Cricket

OK ... Mais, les touches fléchées devraient fonctionner. Peu importe si votre professeur pense que je devrais les utiliser. Et je les trouve parfois pratiques. Alors, impatient de voir la solution.
svidgen

1
que se passe-t-il lorsque vous insérez le littéral de clé dans un tampon? passez en mode insertion, puis appuyez sur Ctrl + v, puis sur une touche fléchée. Vim sur mon Mac affiche la touche flèche haut comme ^[OA, bas comme ^[OB, droite comme ^[OCet gauche comme ^[OD. vérifier avant et après que le problème se présente
Nathan Wallace

@NathanWallace ne sais pas comment j'ai ignoré votre question. J'essaierai cela lorsque je serai sur mon Mac.
svidgen

Réponses:


24

Trouvé dans le blog de James Hodgkinson , la commande suivante fonctionne pour moi. Notez qu'il rafraîchira l'écran vim.

:!reset

Je ne sais pas comment j'ai oublié cette réponse, mais elle semble très prometteuse!
svidgen

En fait ... Frapper Ctrl + R comme décrit dans l'article reproduit le problème en pleine cohérence avec les mappages de touches fléchées incorrectes notés dans ma réponse à Nathan ci-dessus. Et la commande de réinitialisation le résout dans ce cas. Et .. Je ne peux pas reproduire le problème de manière fiable d'une autre manière, c'est donc certainement la réponse la plus utile!
svidgen

11

J'ai également rencontré ce problème à plusieurs reprises. Il se trouve que j'exécutais l'écran GNU sur un autre ordinateur auquel j'étais connecté via SSH. Pour résoudre le problème, j'ai détaché mes écrans ( Ctrl- a d), déconnecté de la machine, reconnecté et reconnecté à l'aide de screen -x. Il peut fonctionner sans se déconnecter de la machine, simplement en détachant et en rattachant l'écran. Je ne me souviens pas cependant.


La fermeture de ma session d'écran et son redémarrage l'ont corrigé pour moi.
Eno

1
c'était le problème pour moi. D'une manière ou screend'une autre, je suis tombé dans un état de funk (via une connexion ssh). Fermer ce terminal, puis ssh à nouveau, et a screen -rdfait l'affaire. Merci!
Pierre D

@PierreD correct, j'ai déjà rencontré ce problème à plusieurs reprises - également lors d'une screensession, Detach & Reattach a résolu le problème, merci!
stdcerr

6

Dans le chemin /usr/share/vim/j'ai trouvé le .vimrcfichier ... Là j'ai ajouté la ligne

set term=ansi 

Ça a marché pour moi. Maintenant, les touches fléchées fonctionnent correctement dans l'éditeur Vim.


2
Cela a également été corrigé pour moi, car la dernière mise à jour Windows 10 WSL / Ubuntu l'a cassé.
Gray Fox

3

Cela ressemble beaucoup à votre problème. L'article est intitulé: Cursor Keys in Vim: You Mac'ing Me Crazy! .

extrait

Vim est utile dans de nombreuses situations, en particulier pour les modifications rapides (en particulier en tant que root) et l'édition de fichiers sur un serveur distant. Un ennui que j'ai eu au cours de mes neuf mois avec un Mac Book Pro est que les touches de curseur de Vim sonnent la cloche en mode insertion ou commande au lieu de changer de ligne. La mise à niveau vers la version 7 via MacPorts a donné les mêmes résultats. Les touches de curseur ont fonctionné après avoir changé mon TERM en VT220 de rxvt! L'inconvénient était que la mise en évidence de la syntaxe a cessé de fonctionner.

Heureusement, l'ajout de VT220 à mes paramètres de recherche Google a révélé une référence aux touches de curseur vt100 dans la documentation de Vim. Ajoutez le code suivant à votre fichier .vimrc pour résoudre le problème:

    :set notimeout          " don't timeout on mappings
    :set ttimeout           " do timeout on terminal key codes
    :set timeoutlen=100     " timeout after 100 msec

Dans le même article , il y a une autre suggestion de mettre votre $TERMà la linuxplace sur OSX.

extrait

Une meilleure solution consiste à remplacer la valeur par défaut de TERM par linux ou dtterm car la valeur TERM sera récupérée sur le serveur distant. De nos jours, je parierais que la plupart des serveurs prennent en charge ces deux types de terminaux.


Hmm ... je suis encore plus confus maintenant. J'avais pensé que j'avais des .vimrcfichiers globaux / par défaut . Auraient-ils été déplacés ou supprimés lors d'une mise à jour d'OS X?
svidgen

@svidgen - Non, je ne pense pas que cela aurait changé, mais ce problème semblait similaire à la vôtre, et le correctif est assez facile à essayer, j'ai donc pensé le partager avec vous. Soit dit en passant, cela $TERMaurait pu vous changer.
slm

Whelp, c'est certainement la réponse la plus pertinente ici. +1 pour cela. Je ne sais pas si cela le corrige encore, malheureusement, car je ne peux pas reproduire le problème de manière cohérente.
svidgen

Après avoir appliqué ce correctif, le problème s'est produit à nouveau. Encore une réponse pertinente, laissant le +1. Mais, veuillez voir mon commentaire ci-dessus si vous êtes intéressé à fournir une réponse supplémentaire.
svidgen

0

Félicitations pour la mise à jour. J'ai fait ma propre mise à jour au cours du week-end et j'ai été confronté à certains de mes problèmes de clavier.

Voici quelques éléments que je devais:

  • Supprimez l'ancien logiciel de jeu Logitech et mettez-le à niveau. Avant cela, j'avais des problèmes avec mes accolades carrées et bouclées. Les clés spéciales envoient souvent des séquences esc- [dans le contexte VIM, donc cela peut être pertinent.
  • Allez dans System Prefs: Sécurité et confidentialité: Confidentialité: Accessibilité et activez quelques applications (synergy_server et Logitech gaming software). Avant ce changement, je ne pouvais pas contrôler mes autres ordinateurs avec synergie ou utiliser des macros avec mon G11. Je doute que ce soit une connexion directe pour vous, mais les options d'accessibilité sont nouvelles et pourraient s'appliquer à une autre de vos applications.

0

Si vous travaillez dans des .sqlfichiers vim(vous ne le mentionnez pas), cela pourrait vous aider. Je viens de traiter cela l'autre jour.

Dans le fichier ~/.vimrc

let g:omni_sql_no_default_maps = 1

cette question particulière est discutée ici

Si vous ne rencontrez pas ce problème avec les .sqlfichiers, vimje m'excuse, ma seule pensée serait de vérifier le mappage à l'intérieur vimlorsque le problème se produit.

:map Ctrl V → lorsque vous perdez votre capacité à utiliser votre flèche, exécutez cette commande et voyez si le mappage a disparu. si c'est le cas, cela vous donne un endroit pour commencer à creuser.


0

J'ai eu ce problème lors d'une session SSH et je l'ai résolu en vous déconnectant puis en vous reconnectant:

exit
ssh ...

Merci d'avoir pesé. La réponse choisie a toujours fonctionné pour moi cependant. L'as tu essayé?
svidgen

Oui, la solution acceptée ne fonctionnait pas sur Ubuntu 18. J'ai même désinstallé et réinstallé vim (dans la même session ssh) et aucun dé. Déconnectez-vous puis reconnectez-vous uniquement à la fonctionnalité de flèche restaurée.
duhaime

0

J'ai eu ce problème lorsque j'ai utilisé une "variable d'environnement système" dans Windows, en définissant TERMsur xterm-256color. Le problème a disparu (et mon vimretour à la normale) lorsque j'ai à nouveau supprimé la variable.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.