Используя Vim 7.4 в Windows в ConEmu (хотя я видел то же самое на других платформах / установках), я замечаю, что подсветка синтаксиса соответствует начальной и конечной двойным звездочкам в виде выделенных курсивом областей в выделенной ими жирной области. Это бельмо на глазу:
Покопавшись, думаю, я нашел источник этой проблемы (из $VIMRUNTIME/syntax/markdown.vim
):
syn region markdownItalic start="\S\@<=\*\|\*\S\@=" end="\S\@<=\*\|\*\S\@=" keepend contains=markdownLineStart
syn region markdownItalic start="\S\@<=_\|_\S\@=" end="\S\@<=_\|_\S\@=" keepend contains=markdownLineStart
syn region markdownBold start="\S\@<=\*\*\|\*\*\S\@=" end="\S\@<=\*\*\|\*\*\S\@=" keepend contains=markdownLineStart,markdownItalic
syn region markdownBold start="\S\@<=__\|__\S\@=" end="\S\@<=__\|__\S\@=" keepend contains=markdownLineStart,markdownItalic
syn region markdownBoldItalic start="\S\@<=\*\*\*\|\*\*\*\S\@=" end="\S\@<=\*\*\*\|\*\*\*\S\@=" keepend contains=markdownLineStart
syn region markdownBoldItalic start="\S\@<=___\|___\S\@=" end="\S\@<=___\|___\S\@=" keepend contains=markdownLineStart
И дальше вниз:
hi def link markdownItalic htmlItalic
hi def link markdownBold htmlBold
hi def link markdownBoldItalic htmlBoldItalic
Как видите, жирный шрифт принимает курсив в качестве субрегиона. Проблема заключается в том, если я markdownItalic
из contains=
, это:
больше не работает правильно:
хотя это решило другую проблему. Я также пытался заменить \S
в регулярных выражениях курсивом [^*]
но это тоже не сработало. Кроме того, установка плагина Plastic Boy's Markdown не помогла.
Любые идеи о том, как обойти это раздражающее дело?