2009-09-08 9 views
5

Ich bin genervt mit der Standard-Python-Syntax Hervorhebung in Vim.Vim Syntax Highlighting 'else:' für Python

Die Anweisung else: wird nicht korrekt hervorgehoben. Vim hebt nur die else-Anweisung hervor, wenn ich zwischen else und dem Doppelpunkt : etwas Leerraum habe, also else : funktioniert, aber else: nicht funktioniert.

Es muss einfach zu beheben sein.

Ich verwende Vim 7.2

Antwort

6

ich unten Aussage in meiner vimrc hatte. Dies machte else: als ein Wort tokenisiert werden. Nach dem Entfernen der anderen: Syntax Highlighting funktioniert gut.

set iskeyword+=:

+0

Das ist genau richtig. Danke, Sir! – Bob

+0

Um einen ähnlichen Effekt zu erhalten, könnten Sie einfach eine Syntaxregel nur für einen Doppelpunkt hinzufügen, der dann die Hervorhebung für das Schlüsselwort verknüpft. – SingleNegationElimination

+1

Sind Sie sicher, dass der Befehl korrekt ist? '+ =:' hatte keine Wirkung für mich, '- =:' das Mark Roberts erwähnt hat. –

4

Es standardmäßig funktionieren sollte.

Suchen Sie nach einer Datei, die so etwas wie dieses:

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

Es sollte eine Linie gibt, die wie folgt aussieht:

syn keyword pythonConditional if elif else 

Wenn nicht, weiter zu untersuchen. Funktioniert elif?

4

Beachten Sie, dass die Datei in

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

bisher aus irgendeinem Grund nicht nach oben.

Erhalten Sie die aktuellste Version der Syntax Highlight-Datei von http://www.vim.org/scripts/script.php?script_id=790

+0

Dies brachte tatsächlich eine Änderung in Verbindung mit der Antwort von Mark Roberts. – Zelphir

3

Diese periodisch erscheint, und ich habe in meinem vimrc zu setzen dieses genommen:

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

Dies bedeutet jedoch, dass der Doppelpunkt nicht hervorgehoben wird. Man könnte dies mögen oder mag diese Tatsache nicht. – Zelphir

0

In meiner ~/.vim /syntax/python.vim Datei, ich habe eine Zeile

syn keyword pythonConditional else: 

, die dieses Problem löst.