Les couleurs des bornes sont réglées séparément de :colorscheme
Il existe une fonction que vous pouvez utiliser pour voir quelles sont les couleurs actuelles et qui s'appelle term_getansicolors
.
Il existe également un autre programme appelé term_setansicolors
. La fonction get reçoit le numéro de tampon sur lequel se trouve le terminal et renvoie un tableau de codes hexagonaux...
:echo term_getansicolors(bufnr())
Vous pouvez également régler le résultat sur votre registre avec :
:let @" = join(term_getansicolors(bufnr))
Vous pouvez ensuite les coller pour voir les couleurs réelles et les modifier.
Je n'ai pas encore essayé la partie suivante, mais en théorie, vous pouvez créer votre propre tableau de couleurs hexagonales et les passer dans term_setansicolors
:
:call term_setansicolors(bufnr(), [ ...my new colours ])
Après cela, vous pouvez créer votre propre mapping qui ouvre le terminal avec cet appel de fonction inclus, ou faire quelque chose de plus compliqué qui récupère les couleurs de votre jeu de couleurs actuel et les règle automatiquement.
Je vais peut-être essayer de le faire et je reviendrai ici pour en dire plus si cela fonctionne.
Mise à jour (je l'ai fait)
Si vous dressez une liste de highlight
vous pouvez les utiliser pour définir la couleur de surbrillance actuelle du terminal gui à l'aide des fonctions synIDattr
(attribut d'identification syntaxique) et hlID
(mettre en évidence l'ID).
Commencez par dresser une liste des noms de points saillants avec une valeur de premier plan fg
ou la valeur d'arrière-plan bg
.
let g:term_colourscheme_colours = [
\ { 'hi': 'Vertsplit', 'type': 'fg' },
\ { 'hi': 'Normal', 'type': 'fg' },
\ { 'hi': 'Conditional', 'type': 'fg' },
\ { 'hi': 'Special', 'type': 'fg' },
\ { 'hi': 'UnderLined', 'type': 'fg' },
\ { 'hi': 'Cursor', 'type': 'bg' },
\ { 'hi': 'Operator', 'type': 'fg' },
\ { 'hi': 'Error', 'type': 'bg' },
\ { 'hi': 'MoreMsg', 'type': 'fg' },
\ { 'hi': 'Type', 'type': 'fg' },
\ { 'hi': 'Directory', 'type': 'fg' },
\ { 'hi': 'Boolean', 'type': 'fg' },
\ { 'hi': 'Normal', 'type': 'bg' },
\ { 'hi': 'FoldColumn', 'type': 'fg' },
\ { 'hi': 'Define', 'type': 'fg' },
\ { 'hi': 'StatusLine', 'type': 'fg' }
\]
La position a de l'importance, donc si vous ne les aimez pas, vous pouvez les intervertir ou même changer la position de l'étiquette. hi
valeurs (do :hi Directory
pour voir les codes hexagonaux de la mise en évidence du répertoire, par exemple).
J'utilise le ap/vim-css-color
qui me montre les couleurs si j'ai des codes hexagonaux à l'écran (...c'est génial).
La partie suivante consiste en quelques fonctions permettant de parcourir cette liste et de définir chaque élément à l'aide de la fonction term_setansicolors
:
function MapAnsiTermColours(key, val)
silent! let l:colour = synIDattr(hlID(a:val.hi), a:val.type)
if len(l:colour)
return l:colour
else
return term_getansicolors(bufnr())[a:key]
endif
endfunction
let g:MapAnsiTermFunc = function("MapAnsiTermColours")
function SetAnsiTermColours()
silent! call term_setansicolors(bufnr(), map(g:term_colourscheme_colours, g:MapAnsiTermFunc))
endfunction
La dernière étape consiste à appeler SetAnsiTermColours
lorsqu'une mémoire tampon de terminal est chargée :
autocmd TerminalOpen * silent! call SetAnsiTermColours()