Je cherche une solution possible pour appliquer deux couleurs d'arrière-plan différentes à l'intérieur d'un seul tampon vim en fonction du contexte comme dans cet exemple de texte sublime .
Un cas d'utilisation de cela est de colorer les extraits de code à l'intérieur des fichiers de balisage différemment afin qu'ils se démarquent davantage.
Cependant, je n'ai jamais vu d'exemple avec une telle configuration.
Est-ce que cela est possible dans vim?
colorscheme
Karolis Koncevičius
la source
la source
Réponses:
Parce que j'étais curieux de savoir comment cela fonctionnerait, j'ai piraté quelque chose ensemble ce genre de travaux.
Comme mentionné dans les commentaires sur la réponse précédente, la seule façon de le faire est de remplir les régions avec des espaces; c'est exactement ce que nous faisons; avant d'écrire, nous supprimons ces espaces, vous ne devriez donc pas déranger qui que ce soit d'autre.
Notez que cet exemple est très spécifique pour le type de fichier Markdown!
Effets secondaires :
'list'
est activéTout d'abord, vous devez l'ajouter à votre
~/.vim/after/syntax/markdown.vim
:Vous pouvez bien sûr ajuster les couleurs à votre guise ;-)
Ensuite, ajoutez ceci à votre vimrc:
Je ne vais pas expliquer le code ligne par ligne, les commentaires devraient clarifier l'essentiel général ;-)
la source
Il est certainement possible d'utiliser une couleur d'arrière-plan différente pour les éléments mis en évidence par la syntaxe. Définissez simplement les couleurs
guibg
etctermbg
dans votrehilight
commande. Le premier définit la couleur d'arrière-plan pour GUI Vim, et le second pour le terminal Vim.Cependant, cela présente l'importante limitation du fait qu'il ne peut définir que les couleurs d'arrière-plan des caractères qui existent réellement dans le fichier.
Le résultat est que la couleur d'arrière-plan ne peut pas s'étendre au-delà de la fin du texte sur une ligne jusqu'au bord de la fenêtre, de sorte que la coloration des blocs de code illustrés dans votre exemple n'est pas possible:
Vous pouvez également modifier la couleur d'arrière-plan de lignes entières à l'aide de la fonction Signer. (Voir
linehl
dans:help sign.txt
)Cependant, notez que:
Pour ce faire, il faut écrire du code pour placer des signes sur chaque ligne qui doit être colorée et les garder à jour lorsque le contenu du fichier change,
Par défaut, lorsque vous placez un signe, la colonne du signe sera affichée à gauche de la fenêtre. Il est possible de modifier la coloration de la colonne de signe avec le
SignColumn
groupe de surbrillance, et dans les versions plus récentes de Vim, il peut être entièrement supprimé. (Voir:help 'signcolumn'
.)Par exemple, pour adapter la solution de Carpetsmoker à l'utilisation du mécanisme de signe (plus robuste), vous pouvez procéder comme suit:
Cela simplifie quelque peu le code et comporte moins de mises en garde que la version de Carpetsmoker.
Le plugin DynamicSigns de @ChristianBrabandt facilite l'utilisation de la fonction Sign à cette fin: il décrit comment l'utiliser pour le faire dans cette réponse .
la source
guibg
ne fonctionne que pour gvim, n'est-ce pas?ctermbg
, comme indiqué.