42 votes

Vim lent avec ruby coloration syntaxique

J'ai été en utilisant vim via ssh pour le travail une semaine ou deux maintenant et tout va bien. Aujourd'hui, j'ai décidé d'ajouter dans certains de coloration syntaxique, auto-complétion, et quelques autres plugins. Configurer vundle et est allé travailler.

Mon actuel .vimrc peut être trouvé à https://github.com/scottopell/dotfiles/blob/master/.vimrc

J'ai cloné mon vimrc et vim fichiers sur mon local ubuntu desktop et vim fonctionne exactement comme prévu, pas de lenteur sur tous les fichiers que je peux trouver. Même les plugins et même vimrc et pas de lenteur sur ruby.

mise à jour

Je peux reproduire ce problème avec celui-ci .vimrc

syntax on

et un vide ~/.vim le dossier.

Cependant, vim sur ce serveur est très lent avec ruby/haml fichiers. Beaucoup plus ruby. Quand je ouvrir n'importe quel fichier ruby, le démarrage prend environ 2 secondes (chronométré avec --startuptime). Avec une longueur comparable haml fichier, son sujet .5 secondes. Cette lenteur n'est pas seulement au démarrage soit, de se déplacer et de modifier le fichier sont à la fois lente et douloureuse.

Haml/erb(ils sont fondamentalement les mêmes)

268.818  000.005: before starting main loop
848.871  580.053: first screen update

Ruby

199.613  000.004: before starting main loop
2937.859  2738.246: first screen update

Sans la coloration syntaxique sur le même fichier ruby comme ci-dessus

149.047  000.004: before starting main loop
152.912  003.865: first screen update 

J'ai essayé d'utiliser mosh(http://mosh.mit.edu) et il ne l'aide pas. pas vraiment plus d'actualité

Comme vous pouvez le voir dans mon .fichiers vimrc, j'ai essayé quelques solutions à ce problème. J'ai essayé de courir avec tous les plugins désactivés (je me suis déplacé à partir d' ~/vim/bundle/PLUGINNAME de ~/vim/bundle/disabled/PLUGINNAME, est-ce correct?), jeu de ruby chemin, mis foldlevel de manuel, désactivé mon colorscheme, rien n'y fait. voir edit3

Je peux poster le plein startupttime journal pour n'importe quel fichier si ça va aider.
J'ai testé quelques autres langages(php, c, python, vimL) et aucune expérience, aucun ralentissement.


EDIT: Juste pour préciser, je suis en cours d'exécution d'une session ssh avec ssh utilisateur@serveur puis une fois à l'intérieur du serveur, j'ai fais vim fichier.rb.

EDIT2: j'ai juste essayé un accès direct au serveur et à la lenteur persiste sans ssh, j'ai mis à jour pour refléter le fait que ce n'est pas un problème avec ssh.

EDIT3: je peux reproduire le problème avec un .vimrc fichier qui contient la ligne syntax on avec un vide ~/.vim dossier

EDIT4 j'ai désinstallé ma version compilée de vim et de toute les versions que j'ai peut-être installé par apt, supprimé manuellement tous les vim choses de mon système, et je peux courir vim avec vim -u NONE /path/to/file.rb alors :syn et le problème sera là. Le fichier en question est un rails de contrôleur, mais comme je l'ai dit, je peux le recréer à un certain degré, avec la plupart n'importe quel fichier, mais les rails de contrôleurs de voir le pire.

99voto

ScottO Points 506

La solution à ce problème s'est avéré être le moteur d'expressions régulières que vim utilise. La spéculation sur #vim sur freenode, c'est que la syntaxe ruby fichiers utiliser quelque chose qui est plus lent sur le nouveau moteur d'expressions régulières.

Toute version antérieure à la version et y compris Vim 7.3.969 a l'ancien moteur d'expressions régulières. Ajouter en set re=1 votre vimrc de la force de l'ancien moteur d'expressions régulières sur toute version plus récente.

Grâce à Houl, Dolio et dmedvinsky de #vim pour les aider à essayer de le comprendre.

Je n'ai pas eu la chance d'essayer l'absolu dernière version, il y avait un commit la nuit dernière qui peut aider avec ce problème. Je mettrai à jour si j'ai l'occasion d'essayer le saignement version de bord de nouveau.

16voto

Denny Crane Points 147

Vous devez définir cette tw options dans votre vimrc:

set ttyfast
set lazyredraw

Si ce n'est pas résoudre votre problème, essayez de démarrer vim sans votre vimrc pour être sûr qu'aucun de vos paramètres actuels sont le vissant en place.

vim -u NONE

7voto

Stefan Points 23363

Essayez de régler votre ruby chemin explicitement dans votre vimrc:

let g:ruby_path="/usr/bin/ruby"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X