Activation de la mise en évidence des démarques dans Vim

138

J'utilise Vim dans un terminal sur mon MacBook Air avec OS X Lion, et je n'arrive pas à trouver un bon plugin pour la coloration syntaxique Markdown.

Jusqu'à présent, j'ai essayé le plugin plasticboy et le plugin Tim Pope . Le plugin plasticboy fonctionnait bien mais faisait en sorte que les espaces blancs à la fin des lignes étaient mis en évidence, et je n'ai pas compris comment désactiver cela. (C'est vraiment ennuyeux, car chaque fois que je frappe spacequand j'écris, cela met en valeur le personnage.)

Le plugin de Tim ne semblait pas faire grand-chose en matière de mise en évidence, à part peut-être les en-têtes qui utilisent ###. Les blocs de code et les puces sont ignorés. Il me manque peut-être quelque chose là-bas. J'utilise l' .mdextension sur mes fichiers Markdown, il devrait donc choisir le type de fichier.

J'ai également vu une référence à Vim 7.3 ayant le support Markdown intégré, mais sans l'un de ces deux plugins, je n'ai pas du tout de mise en évidence.

L'un ou l'autre de ces éléments nécessite-t-il des combinaisons de couleurs spécifiques pour fonctionner?

Josh Earl
la source
24
*.mdn'est pas la bonne extension pour le démarquage. Celui-ci est pour les fichiers modula. Le plugin Tpope fonctionne très bien (tous ces plugins fonctionnent bien) Vous devriez utiliser l' *.markdownextension
lucapette
7
@lucapette le ftdetect pour le plug - in de Tim Pope ne comprend également *.md, ainsi que: *.markdown,*.mdown,*.mkd,*.mkdn. Le plugin plasticboy détecte automatiquement uniquement*.mkd,*.markdown,*.mdwn
pb2q
1
D'après la source du plugin plasticboy, il semble qu'il détecte .mdégalement. Je suis bloqué dans cette extension pour le moment car j'utilise Scriptogr.am pour mon blog, et c'est la seule extension qu'ils reconnaissent actuellement.
Josh Earl
1
Je viens de trouver ceci et c'est assez rockin pour le markdown aromatisé github: github.com/jtratner/vim-flavored-markdown
Matthew Turner
Pour les problèmes avec plasticboy / vim-markdown , veuillez ouvrir les problèmes sur les projets afin que les développeurs puissent les résoudre. Je trouve que mettre en évidence les espaces blancs de fin est un bon comportement car les doubles espaces génèrent des <br>balises, donc les rédacteurs doivent en être conscients.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Réponses:

22

Cela devrait fonctionner pour désactiver la mise en évidence de l'espace de fin de ligne lors de l'utilisation du plugin plasticboy mkd:

:syn clear mkdLineBreak

Vous pouvez autocmdcela pour les extensions de fichier nécessaires afin que vous n'ayez pas besoin de le faire chaque fois que vous chargez un fichier de démarque.

Notez que ce surlignage spécifique existe parce que Markdown traite les lignes se terminant par 2 caractères d'espace ou plus spécialement en insérant un <br>, donc c'est utile.

Le plugin plasticboy utilise la TODOmise en évidence pour cette règle, ce qui est un peu trop car il est conçu pour, par défaut, être vraiment criard - fond jaune - pour qu'il se démarque. Vous pouvez rendre cela moins frappant visuellement en modifiant cette highlightrègle. Un moyen rapide de le faire serait quelque chose comme:

:hi link mkdLineBreak Underlined

Maintenant, ces espaces de fin de ligne apparaîtront comme soulignés. Essayez de créer des liens vers d'autres highlightgroupes pour quelque chose qui pourrait vous plaire davantage. Au lieu d'utiliser, linkvous pouvez être encore plus précis sur ces espaces de fin de ligne: par exemple, vous pouvez spécifier qu'ils apparaissent comme juste légèrement plus clairs / plus foncés que l'arrière-plan normal, en utilisant votre propre highlightcommande, en spécifiant ctermfg , ctermbg , guifg personnalisé , paramètres guibg .

Comme ci-dessus, vous pouvez autocmdappliquer vos paramètres spécifiques.

Pour plus d'informations sur les highlightgroupes de liens , tapez: :help group-nameet vous verrez une liste des groupes qui peuvent être liés qui devraient eux-mêmes s'afficher à l'aide de leurs highlightrègles actuelles . En outre: :help highlight.

pb2q
la source
2
Cela a du sens. Je n'avais pas réalisé que deux espaces avaient une signification dans Markdown. Je pense que je vais le laisser activé à moins qu'il ne continue de me déranger. Merci!
Josh Earl
Ouais, c'est pourquoi le point culminant ne démarre pas tant que 2 espaces n'ont pas été entrés.
pb2q
@ josh-earl voir mes modifications pour plus d'alternatives lors de l'utilisation du plugin
plasticboy
308

À propos de la syntaxe native pour Markdown, je pense que cela ne fonctionne que pour les fichiers avec l'extension .markdownpar défaut.
J'avais des problèmes avec la mise en évidence de la syntaxe de démarque pour mes .mdfichiers.
J'ai essayé:

:set syntax=markdown

Et ça a marché. J'ai donc inclus la ligne suivante dans mon .vimrc:

au BufNewFile,BufFilePre,BufRead *.md set filetype=markdown

Maintenant, mon vim a une coloration syntaxique pour mes .mdfichiers.

BufFilePre est nécessaire pour: sav

PutzKipa
la source
13
Pour tous ceux qui lisent ceci: oui, cela fonctionne et c'est une solution beaucoup plus simple au problème que d'installer un plugin. Moyen rapide de le faire à partir de la ligne de commande: echo "au BufRead, BufNewFile * .md set filetype = markdown" >> .vimrc
RobinLovelace
11
Il me semble que cela devrait être la réponse acceptée.
Enrico Campidoglio
4
@SamStoelinga Ce n'est pas un bug, .mdest également utilisé par Modula. Détecter lequel utiliser nécessiterait des heuristiques avancées.
nyuszika7h
8
Depuis Vim 7.4.480, les *.mdfichiers sont reconnus par défaut comme Markdown.
fwalch
1
Correct, mais incomplet. Pour que cela fonctionne également avec la Save As… :savcommande, il faut étendre l'autocommande à BufFilePre:autocmd BufNewFile,BufFilePre,BufRead *.md set filetype=markdown
Serge Stroobandt
19

Mise en évidence de la syntaxe native

La coloration syntaxique native pour Markdown ne fonctionne par défaut que pour l' .markdownextension de fichier.

La ligne suivante .vimrcdonne les meilleurs résultats pour vimet gvim:

autocmd BufNewFile,BufFilePre,BufRead *.md set filetype=markdown.pandoc

Explication:

1. Spécifiez votre saveur Markdown!

Si vous travaillez principalement avec une seule saveur de Markdown (par exemple Pandoc ), n'oubliez pas de le mentionner également! Cela permet de mélanger et de faire correspondre les plug-ins Vim spécifiques à Markdown et Pandoc. Par exemple: j'ai trouvé le plug-in vim-pandoc-syntax particulièrement adapté à mes besoins de mise en évidence. Néanmoins, j'utilise le pliage vim-markdown plus général pour le pliage Markdown.

À propos, une seule saveur est autorisée, séparée par un point, par exemple: filetype=markdown.pandoc

2. gvimnécessiteBufFilePre

gvimnécessite un supplément BufFilePredans la ligne de commande automatique pour la reconnaissance du type de fichier Markdown avec la Save As… :savcommande.

Serge Stroobandt
la source
15

Dans le plugin de Tim, l' extension .md ne fonctionne que pour README.md car filetype.vim le spécifie.

" Markdown
au BufNewFile,BufRead *.markdown,*.mdown,*.mkd,*.mkdn,README.md  setf markdown
spartiate
la source
1
Faux; vous devez penser à l'installation par défaut de Vim, qui se comporte de cette manière. Le plugin de Tim le remplace pour tous les fichiers .md. Voir github.com/tpope/vim-markdown/blob/master/ftdetect/markdown.vim
corvec
7

Si vous n'aimez pas mettre toute votre configuration ~/.vimrc, vous pouvez créer ~/.vim/ftdetect/markdown.md(ou son équivalent sous Windows) avec le contenu suivant.

au BufNewFile,BufRead *.md setf markdown

ajmccluskey
la source