Impedisci a Vim di interrompere i collegamenti a metà tag nel markdown


16

Diciamo che ho questo file Markdown:

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

Avere un bell'aspetto. Ma il collegamento non è finito, quindi -longscrivo e ora Vim rompe la linea:

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

A causa della mia textwidth=80impostazione ... Mentre interrompere un collegamento a metà tag è un markdown tecnicamente valido, sembra molto sgradevole IMHO; avere dei file sorgente dall'aspetto gradevole è una sorta di punto di ribasso.

Con gqil problema è spesso anche peggio:

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)

Diventa questo:

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)

Esiste un modo per dire a Vim o alla sintassi markdown di non interrompere i collegamenti in questo modo?

  • Forse trattando l'intero link (da [a )) come una singola parola.
  • Ho lo stesso problema con il [this][type]link markdown.

Risposte:


9

In passato ho avuto un problema simile con le firme delle funzioni. Ecco una soluzione adattata al tuo problema. Aggiungi a .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

Nota, potresti voler cambiare '^.*\[.*\](.*)$'regex. Attualmente, se è presente del testo dopo il collegamento, la riga potrebbe essere interrotta come nell'esempio. Tuttavia, se il regex corrisponderebbe alle linee con collegamenti ovunque all'interno, potrebbe apparire un altro problema:

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

In questo esempio l'interruzione di riga non viene inserita dopo amet,e deve essere aggiunta manualmente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.