2 Stimmen

Wie setzt man die Farben der Syntax-Hilights in VIM auf die Werte der lokalen Variablen im Syntax-Skript?

Was ich gerne machen würde, ist etwas wie das Folgende:

"define our language struct variables with their default syntax color values
let s:procedural_fg = "Red"
let s:declarative_fg = "Blue"
let s:string_fg = "DarkGray"

...

"Now the actual highlighting directives based on the groups defined elsewhere
hi cyLoops guifg=s:procedural_fg
hi cyConstants guifg=s:declarative_fg
hi cyString guifg=s:string_fg

aber VIM lässt mich die guifg-Werte nicht auf diese Weise festlegen ("Error: Cannot allocate color s:procedural_fg" ... und so weiter für jeden Variablennamen). Ich möchte die Syntaxhervorhebung auf diese Weise definieren, damit sie dynamisch geändert werden kann, indem ich die Werte der lokalen Variablen ändere und dann den Puffer aktualisiere (oder was auch immer nötig wäre, damit die neuen Farbwerte gelten).

Kann dies in einem VIM-Syntax-Skript erledigt werden? Wenn ja, wie?

Ich habe bereits mehrere Varianten ausprobiert:

"define our language struct variables with their default syntax color values
let s:procedural_fg = Red
let s:declarative_fg = Blue
let s:string_fg = DarkGray

...

"Now the actual highlighting directives based on the groups defined elsewhere
hi cyLoops guifg=s:procedural_fg
hi cyConstants guifg=s:declarative_fg
hi cyString guifg=s:string_fg

und

"define our language struct variables with their default syntax color values
let s:procedural_fg = v:Red
let s:declarative_fg = v:Blue
let s:string_fg = v:DarkGray

...

"Now the actual highlighting directives based on the groups defined elsewhere
hi cyLoops guifg=s:procedural_fg
hi cyConstants guifg=s:declarative_fg
hi cyString guifg=s:string_fg

was zu einer Fehlermeldung führt, die besagt, dass Red, Blue usw. oder v:Red, v:Blue usw. undefinierte und/oder ungültige Ausdrücke sind.

Danke, CCJ

2voto

Benoit Punkte 72929

Utilice :exec , was für Vim das ist, was eval für Perl oder die Bash-Shell ist:

:exec 'hi cyLoops guifg=' . s:procedural_fg

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X