Я использую Vim 8.0 и прилагаемый к нему syntax/markdown.vim по умолчанию, который является версией Пакет vim-markdown Тима Папы.

В этом пакете есть ошибка, которая действительно раздражает меня в некоторых файлах: он рассматривает любую строку с четырьмя или более пробелами как блок кода, включая продолжение списка. Таким образом, в следующем:

1. Agenda Item 1: Frob the Bazzit
   - The bazzit is something that makes us have
     very _short_ lines indeed.
   - Further frobbing is necessary

Строка very _short_ lines indeed будет выделена как блок кода, а слово short не будет выделено курсивом.

Я доволен просто полным отключением подсветки блоков кода, по крайней мере, в этих обстоятельствах, но я не могу понять, как это сделать после свершившегося факта. Я тестировал ~/.vim/after/syntax/markdown.vim для настройки конфигурации, но я не могу понять, как, как только

syn region markdownCodeBlock start="    \|\t" end="$" contained

Был выполнен в системе markdown.vim, я могу отключить это в моем after/syntax/markdown.vim. Как мне это сделать?

(Я попытался использовать highlight link markdownCodeBlock NONE, который отключает цвет блока кода в этих строках, но, к сожалению, они по-прежнему помечены как области блока кода и по-прежнему не выделяют никакой другой разметки, например _italic_ или `code` встроенная разметка.)

3
cjs 12 Апр 2019 в 08:56

2 ответа

Лучший ответ

Похоже, что вы хотите очистить этот конкретный синтаксис группа:

Чтобы очистить определенные группы синтаксиса для текущего буфера:

:syntax clear {group-name} ..

Это удаляет все шаблоны и ключевые слова для {group-name}.

Но похоже, что вы не можете очистить конкретные определения группы. Просто вся группа:

:syn clear markdownCodeBlock
2
muru 12 Апр 2019 в 07:03

Дикая догадка, которую нужно объединить с ответом @ muru, но, возможно, вы можете создать собственную многострочную группу, например, NoSyntax, которая будет в качестве комментария (чтобы при компиляции .md в pdf или другой игнорируется), что-то вроде:

[//]: # (IGNORE)
    - The bazzit is something that makes us have
      very _short_ lines indeed.
    - Further frobbing is necessary
[//]: # (ENDIGNORE)

И затем используйте в ~/.vim/after/markdown.vim:

syntax clear NoSyntax

Сейчас я не за компьютером, чтобы посмотреть, как можно создать подобную группу, но как только я пойду, я поиграю с ним, чтобы посмотреть, что возможно (если это возможно).

РЕДАКТИРОВАТЬ: Вот решение, которое выделяет блок как «Нормальный» (например, без курсива, но по крайней мере без кода, который может ответить I'm happy with just completely disabling code block highlighting, at least in these circumstances):

Поместите следующий код перед , установив цветовую схему:

function! MyMarkdownHighlights() abort
    syntax region mdIgnore  start=+^\s*\[//\]: # (IGNORE)$+ end=+^\s*\[//\]: # (ENDIGNORE)$+ keepend excludenl
    highlight def link mdIgnore Normal
endfunction

augroup MyColors
    autocmd!
    autocmd BufEnter *.md call MyMarkdownHighlights()
augroup END

И используйте это с комментарием:

[//]: # (IGNORE)

А также

[//]: # (ENDIGNORE)

Вот пример (посмотрите, где находится мой курсор и группа выделения, связанная с нижней частью экрана):

enter image description here

2
padawin 12 Апр 2019 в 12:12