Nie pozwól Vimowi na zerwanie linków w środkowej części tagdown

16

Powiedzmy, że mam ten plik Markdown:

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

Wygląda dobrze. Ale link jeszcze go nie zakończył, więc piszę -long, a teraz Vim przerywa linię:

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

Z powodu mojego textwidth=80ustawienia ... Mimo że zerwanie linku w środkowym tagu jest technicznie poprawnym znacznikiem, wygląda bardzo nieestetycznie IMHO; ładnie wyglądające pliki źródłowe są swego rodzaju punktem przeceny.

Z gqproblemem jest często jeszcze gorzej:

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)

Staje się to:

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)

Czy jest jakiś sposób, aby powiedzieć Vimowi lub składni markdown, aby nie przerywały linków w ten sposób?

  • Może traktując cały link (od [do )) jako pojedyncze słowo.
  • Mam ten sam problem z [this][type]linkiem Markdown.
Martin Tournoij
źródło

Odpowiedzi:

9

W przeszłości miałem podobny problem z podpisami funkcji. Oto rozwiązanie dostosowane do Twojego problemu. Dodaj do .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

Uwaga: możesz chcieć zmienić '^.*\[.*\](.*)$'wyrażenie regularne. Obecnie, jeśli za linkiem jest jakiś tekst, linia może być przerywana, jak w twoim przykładzie. Jeśli jednak wyrażenie regularne będzie pasować do linii z łączami w dowolnym miejscu w środku, może pojawić się inny problem:

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

W tym przykładzie podział wiersza nie jest wstawiany później amet,i powinien zostać dodany ręcznie.

Jarlax
źródło