Как отключить область синтаксиса в подсветке синтаксиса vim? - PullRequest
2 голосов
/ 12 апреля 2019

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

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

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` встроенная разметка.)

Ответы [ 2 ]

2 голосов
/ 12 апреля 2019

Дикая догадка, которую нужно объединить с ответом @ 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 голосов
/ 12 апреля 2019

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

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

:syntax clear {group-name} ..

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

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

:syn clear markdownCodeBlock
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...