Je décide d'en savoir plus sur vim et sa coloration syntaxique. En utilisant des exemples pour les autres, je crée mon propre fichier de syntaxe pour Markdown. J'ai vu mkd.vim et il a aussi ce problème. Mon problème se situe entre les éléments de la liste et la mise en surbrillance des blocs de code.Surlignage de Vim Markdown (éléments de liste et conflits de blocs de code)
bloc de code definition:
- première ligne est vide
- deuxième ligne commence avec au moins 4 espaces ou une languette
- bloc est terminé par une ligne blanche
Exemple:
Regular text
this is code, monospaced and left untouched by markdown
another line of code
Regular Text
Ma syntaxe Vim pour le bloc de code:
syn match mkdCodeBlock /\(\s\{4,}\|\t\{1,}\).*\n/ contained nextgroup=mkdCodeBlock
hi link mkdCodeBlock comment
UNORDER Liste item definition:
- première ligne est vide
- deuxième ligne commence par un [- + *] suivi d'un espace
- la liste est finie avec une ligne vide puis une ligne normale (sans liste)
- entre les lignes de ligne il est possible d'ajouter un nombre de lignes vides
- une liste secondaire est spécifiée par l'indentation (4 espace ou une tabulation)
- une ligne de texte normal après un élément de liste est inclut dans le prolongement de cet élément de la liste
Exemple:
Regular text
- item 1
- sub item 1
- sub item 2
- item 2
this is part of item 2
so is this
- item 3, still in the same list
- sub item 1
- sub item 2
Regular text, list ends above
syntaxe Ma pour la définition de Vim élément de la liste de UNORDER (je ne [-+*]
souligner):
syn region mkdListItem start=/\s*[-*+]\s\+/ matchgroup=pdcListText end=".*" contained nextgroup=mkdListItem,mkdListSkipNL [email protected] skipnl
syn match mkdListSkipNL /\s*\n/ contained nextgroup=mkdListItem,mkdListSkipNL skipnl
hi link mkdListItem operator
Je ne peux pas obtenir le Highli essayer de travailler avec les deux dernières règles pour la liste et avec un bloc de code.
Voici un exemple qui casse ma coloration syntaxique:
Regular text
- Item 1
- Item 2
part of item 2
- these 2 line should be highlighted as a list item
- but they are highlighted as a code block
Actuellement, je ne peux pas comprendre comment obtenir la mise en avant de travailler comme je le veux aussi
oublié d'ajouter un règle de syntaxe "globale" utilisée dans les deux règles répertoriées ci-dessous. C'est pour s'assurer qu'ils commencent avec une ligne vide.
syn match mkdBlankLine /^\s*\n/ nextgroup=mkdCodeBlock,mkdListItem transparent
Une autre note: J'aurais été plus clair.Dans mon fichier de syntaxe, les règles de la liste apparaissent avant les règles Blockquote
Cool. Ça me fait finalement vouloir apprendre les scripts vim. :) – jop