Empêcher Vim de rompre les liens au milieu du tag dans le démarque

16

Disons que j'ai ce fichier Markdown:

[Lorem ipsum dolor sit ](http://vi.stackexchange.com/many-links-are-often-very)

Ça a l'air bien. Mais le lien n'est pas terminé, alors je tape -long, et maintenant Vim brise la ligne:

[Lorem ipsum dolor sit
](http://vi.stackexchange.com/many-links-are-often-very-long)

À cause de mon textwidth=80réglage ... Bien que la rupture d'une balise intermédiaire de lien soit une démarque techniquement valide, elle semble très disgracieuse à mon humble avis; avoir de beaux fichiers source est en quelque sorte le point de démarque.

Avec gqle problème est souvent encore pire:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus.
Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec
[Lorem ipsum dolor sit](http://vi.stackexchange.com/many-links-are-often-very-very-long)

Devient ceci:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus.
Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec [Lorem
ipsum dolor
sit](http://vi.stackexchange.com/many-links-are-often-very-very-long)

Existe-t-il un moyen de dire à Vim ou à la syntaxe de démarque de ne pas rompre les liens de cette manière?

  • Peut-être en traitant le lien entier (de [à )) comme un seul mot.
  • J'ai le même problème avec le [this][type]lien de démarque.
Martin Tournoij
la source

Réponses:

9

Dans le passé, j'ai eu un problème similaire avec les signatures de fonction. Voici la solution adaptée à votre problème. Ajouter à .vimrc:

au CursorMovedI *.md call ModifyTextWidth() " Use only within *.md files

function! ModifyTextWidth()
    if getline(".")=~'^.*\[.*\](.*)$' " If the line ends with Markdown link - set big value for textwidth
        setlocal textwidth=500
    else
        setlocal textwidth=80 " Otherwise use normal textwidth
    endif
endfunction

Remarque, vous souhaiterez peut-être modifier l' '^.*\[.*\](.*)$'expression régulière. Actuellement, s'il y a du texte après le lien, la ligne peut être interrompue comme dans votre exemple. Cependant, si l'expression régulière correspond aux lignes avec des liens n'importe où à l'intérieur, un autre problème peut apparaître:

Some info [here](https://www.google.com). Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris

Dans cet exemple, le saut de ligne n'est pas inséré après amet,et doit être ajouté manuellement.

Jarlax
la source