Sie können erkannte Namen mithilfe der Tag-Datei hervorheben, solange die Tag-Datei mit der --c-kinds=+l
generiert wird, um sicherzustellen, dass sie lokale Variablen enthält. Allerdings gibt es derzeit keine realistische Weise den Umfang dieser Variablen zu identifizieren (ctags nicht viele Informationen liefern), daher Vim nicht zwischen Variablen in einer Funktion unterscheiden und eine anderen:
void main(void)
{
int MyVariable; // Highlighted
}
int MyFunction(void)
{
int MyFunctionVariable; // Highlighted
MyVariable = 1; // Syntax error, but still highlighted
}
Es könnte durch Parsing getan werden die C-Datei in ein wenig mehr Details und Erstellen von Syntax-Regionen für jede Funktion, aber es ist alles andere als leicht (und es wäre inkompatibel mit Plugins wie rainbow.vim, da Vim überlappende Regionen nicht unterstützt).
Zu einem verwandten Hinweis, könnten Sie auch interessiert sein, in meinem Tag Hervorhebung Plugin available here. Es wird lokale Variablen hervorheben (wenn b:TypesFileIncludeLocals
auf 1
in dem Puffer festgelegt wird, der geöffnet wird, wenn :UpdateTypesFile
ausgeführt wird), aber es behandelt nicht den Bereich der lokalen Variablen. Es bietet jedoch viel mehr Hervorhebung Farbvariationen als die Hervorhebung in vorgeschlagen. Beachten Sie, dass Ihr Farbschema Highlights für viele zusätzliche Gruppen (z. B. GlobalVariable
, LocalVariable
, DefinedName
usw.) definiert haben muss, um die Vorteile voll auszunutzen.
Können Sie ein Beispiel für das Problem geben? Vielleicht bin ich dicht, aber ich verstehe es wirklich nicht. – innaM