Не дозволяйте Vim розривати середні теги посилань у розмітці


16

Скажімо, у мене є цей файл Markdown:

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

Виглядає добре. Але посилання її не закінчено, тому я набираю текст -long, і тепер Vim перериває рядок:

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

Через моє textwidth=80налаштування ... Під час розриву середньої теги посилання технічно достовірна розмітка, IMHO виглядає дуже непривабливо; мати приємно виглядають вихідні файли - це своєрідна точка відмітки.

З gqпроблемою часто навіть гірше:

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)

Стає таким:

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)

Чи я можу сказати Vim або синтаксис розмітки, щоб таким чином не перервати посилання?

  • Можливо, трактуючи все посилання (від [до )) як одне слово.
  • У мене така ж проблема із [this][type]посиланням на розмітку.

Відповіді:


9

У минулому у мене були подібні проблеми з підписами функцій. Ось рішення, адаптоване до вашої проблеми. Додати до .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

Зауважте, ви можете змінити '^.*\[.*\](.*)$'регулярний вираз. В даний час, якщо після посилання є текст, рядок може бути порушений, як у вашому прикладі. Однак якщо регулярний вирівнювання відповідатиме рядкам із посиланнями десь усередині, може з’явитися інша проблема:

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

У цьому прикладі розрив рядка не вставляється після amet,і повинен бути доданий вручну.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.