2016-08-02 6 views
1

Ich versuche, einen Weg zu finden, bestimmte typedefs hervorzuheben, die ich häufig verwende. Zum Beispiel:Vim Syntax nur Wort

syn match U64 "u64" 
hi def link U64 Type 

Dies funktioniert, dass "u64" in der Tat als ein Typ markiert ist. Das Problem ist, dass, wenn ich eine Variable "u64 u64copy" erstellen würde (nur ein Beispiel, nicht auf hängen, ob etwas tatsächlich diesen Namen haben würde oder nicht) "u64" in "u64copy" ist immer noch hervorgehoben. Ich habe über Regionen nachgedacht, aber ich weiß nicht, welche Region ich festlegen würde, da dies überall im Code ein Problem sein könnte.

+0

Das hat den Trick gemacht, vielen Dank! – kennedyl

Antwort

4

Sie können einfach Wortgrenzen auf die regex hinzufügen:

syn match U64 "\<u64\>" 

Die Token \< und \> Spiel der Nulllängensequenz am Anfang und das Ende eines Wortes sind.

0

Wenn Sie sich das standardmäßige C-Syntax-Skript (zum Beispiel) in $VIMRUNTIME/syntax/c.vim ansehen, werden Sie bemerken, dass es einen speziellen :syntax keyword-Befehl gibt.

syn keyword cType  int long short char void 

:syntax match nimmt einen regulären Ausdruck; Es ist zu mächtig (und unnötig) für Ihren Anwendungsfall. Ich würde empfehlen, auch die Namenskonvention zu halten und stellen Sie vor dem Dateityp (zB c), um Ihre Syntax Gruppennamen:

syn keyword cU64 u64 
hi def link cU64 Type 

Oder fügen Sie einfach auf den Syntax-Gruppe Im Jahr:

syn keyword cType u64