Comme jamessan a dit, vous devez utiliser :exe
pour ce faire. J'ai trouvé la syntaxe générale des fichiers de couleurs un peu difficile à gérer. J'ai donc créé la mienne, qui pourrait vous intéresser. Je la trouve beaucoup plus facile à maintenir, mais vous pouvez la trouver un peu trop verbeuse, dans laquelle cas, voir l'alternative à la fin de cette réponse.
Plutôt que d'écrire les longues lignes :hi
, vous créez un dictionnaire le long des lignes de:
" Unspecified colours default to NONE, EXCEPT cterm(.*) which default to matching gui(.*)
" ctermfg will default to 'Blue' and ctermbg to 'NONE' if gui(.*) are RGB
"
" In most cases, only GUIFG is therefore important unless support for Black and White
" terminals is essential
let ColourAssignment['Normal'] = {"GUIFG": 'White', "GUIBG": 'Black'}
let ColourAssignment['Comment'] = {"GUIFG": '#00ff00'}
Comme mentionné dans le commentaire, toutes les parties non précisées prendre bon sens par défaut, de sorte que vous ne devez pas faire la commune:
:hi Comment guifg=green ctermfg=green guibg=black ctermfg=black
répétition. Vous pouvez également (bien sûr) mettre des variables à la place du bit '#00ff00'
si vous le souhaitez. Il est actuellement conçu autour des couleurs de fond sombres: pour les couleurs de fond claires, il choisit automatiquement une couleur appropriée (il rend les couleurs vives plus foncées) sauf si vous le remplacez, mais si vous préférez les couleurs de fond claires, il ne le fera pas t être trop difficile à changer de sorte que la valeur par défaut est la lumière.
L'autre avantage est qu'il est livré avec un fichier de coloration syntaxique qui met automatiquement en surbrillance le bit "ColourAssignment" dans la couleur que vous avez sélectionnée.
Quoi qu'il en soit, si cela vous intéresse, vous pouvez l'obtenir auprès de here.
Une alternative que vous pouvez utiliser serait de créer une commande comme ceci:
command! -nargs=+ Hi call CustomHighlighter(<f-args>)
function! CustomHighlighter(name, ...)
let colour_order = ['guifg', 'guibg']
let command = 'hi ' . a:name
if (len(a:000) < 1) || (len(a:000) > (len(colour_order)))
echoerr "No colour or too many colours specified"
else
for i in range(0,len(a:000)-1)
let command .= ' ' . colour_order[i] . '=' . a:000[i]
endfor
exe command
endif
endfunc
Vous pouvez ensuite utiliser:
Hi Comment #00ff00
Hi String Yellow
Hi Normal White Black
Autre approche ajoutée. – DrAl
Merci. Je suis content d'apprendre que je n'étais pas le seul à être énervé par la syntaxe des couleurs de Vim! – nelstrom