2009-09-08 12 views
5

Je suis ennuyé par la mise en surbrillance de la syntaxe Python par défaut dans Vim.Syntaxe de Vim mettant en évidence 'else:' pour Python

Il ne met pas en évidence l'instruction else: correctement. Vim ne met en évidence l'instruction else que si j'ai un espace blanc entre else et les deux-points :, donc else : fonctionne, mais pas else:.

Il doit être facile à réparer. J'utilise Vim 7.2

Répondre

6

j'avais ci-dessous la déclaration dans mon dossier vimrc. Cela fait autre chose: être symbolisé comme un seul mot. Après avoir supprimé cela: la coloration syntaxique fonctionne très bien.

set iskeyword+=:

+0

C'est exactement ça. Merci Monsieur! – Bob

+0

Pour obtenir un effet similaire, vous pouvez simplement ajouter une règle de syntaxe juste pour un deux-points qui lie ensuite la surbrillance pour Mot-clé. – SingleNegationElimination

+1

Etes-vous sûr que la commande est correcte? '+ =:' n'a eu aucun effet pour moi, '- =:' que Mark Roberts mentionne a fait. –

4

Cela devrait fonctionner par défaut.

Rechercher un fichier qui est quelque chose comme ceci:

/usr/share/vim/vim72/syntax/python.vim 

Il devrait y avoir une ligne là-bas qui ressemble à ceci:

syn keyword pythonConditional if elif else 

Dans le cas contraire, une enquête plus loin. Est-ce que elif fonctionne?

4

Notez que le fichier dans

/usr/share/vim/vim72/syntax/python.vim 

est pas à ce jour pour une raison quelconque.

La version la plus récente du fichier de mise en surbrillance de la syntaxe de http://www.vim.org/scripts/script.php?script_id=790

+0

Cela a en effet apporté un changement en combinaison avec la réponse de Mark Roberts. – Zelphir

3

Cette affiche périodiquement, et je l'ai pris à mettre dans mon vimrc:

" No seriously, else: is the same as else 
autocmd BufEnter,BufRead,BufNewFile *.py set iskeyword-=: 
+0

Cependant, cela signifie que les deux points ne seront pas mis en évidence. On pourrait aimer ceci ou ne pas aimer ce fait. – Zelphir

0

Dans mon ~/.vim /syntax/python.vim fichier, j'ai une ligne

syn keyword pythonConditional else: 

qui résout ce problème.