Evite que Vim rompa enlaces a mitad de etiqueta en markdown

16

Digamos que tengo este archivo Markdown:

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

Luce bien. Pero el enlace no está terminado, así que escribo -long, y ahora Vim rompe la línea:

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

Debido a mi textwidth=80configuración ... Si bien romper un enlace en la mitad de la etiqueta es una rebaja técnicamente válida, se ve muy desagradable en mi humilde opinión; tener una buena apariencia de los archivos fuente es una especie de punto de rebaja.

Con gqel problema a menudo es aún peor:

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)

Se convierte en esto:

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)

¿Hay alguna forma de decirle a Vim o la sintaxis de descuento que no rompa los enlaces de esta manera?

  • Tal vez tratando el enlace completo (de [a )) como una sola palabra.
  • Tengo el mismo problema con el [this][type]enlace de descuento.
Martin Tournoij
fuente

Respuestas:

9

En el pasado tuve un problema similar con las firmas de funciones. Aquí hay una solución adaptada a su problema. Añadir 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

Tenga en cuenta que es posible que desee cambiar la '^.*\[.*\](.*)$'expresión regular. Actualmente, si hay algún texto después del enlace, la línea puede estar rota como en su ejemplo. Sin embargo, si la expresión regular coincidiría con líneas con enlaces en cualquier lugar dentro, puede aparecer otro 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

En este ejemplo, el salto de línea no se inserta después amet,y debe agregarse manualmente.

Jarlax
fuente