2 votes

Coloration syntaxique Vi pour les mots suivis d'une parenthèse

Je veux changer la couleur d'un mot-clé qui est suivi d'une parenthèse gauche dans un fichier .R.

Par exemple, lorsque je tape length() Je veux le mot length pour être mis en évidence (et non les parenthèses), mais lorsque je tape seulement length il ne sera pas mis en valeur.

Je voudrais également spécifier la couleur du surlignage en fonction du mot. Ainsi, length() y function() devrait donner lieu à des couleurs différentes pour length y function .

Edit : Pour l'instant, j'utilise la ligne suivante dans mon fichier de syntaxe r.vim pour faire correspondre un nom d'objet R valide suivi de ( :

syn match rFunction "\(\(\a\|[.][._\a]\)[._\a0-9]*\)\+\ *("

Et cela fonctionne bien, mais je ne veux pas mettre en évidence que ( à la fin, mais plutôt qu'il soit réglé sur ma valeur par défaut.

1voto

muru Points 180007

Puisque vous avez déjà un modèle à faire correspondre, je pense que vous pourriez utiliser un décalage pour la mise en évidence. De la vim documentation :

                    *:syn-pattern-offset*
The pattern can be followed by a character offset.  This can be used to
change the highlighted part
...
Example:
  :syn match String  /"[^"]*"/hs=s+1,he=e-1
    some "string" text
          ^^^^^^        highlighted

Je pense donc que cela devrait faire l'affaire :

syn match rFunction "\(\(\a\|[.][._\a]\)[._\w]*\)\+\ *("he=e-1

Vous pourriez également utiliser des lookaheads, ce qui serait préférable, car cela vous permet d'éviter que certains éléments entrent dans la correspondance :

syn match rFunction "\(\(\a\|[.][._\a]\)[._\w]*\)\+\ *[(]\@="

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X