我正在使用Vim 8.0及其随附的默认syntax/markdown.vim
,它是Collectable
软件包的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
,它确实禁用了这些行上的代码块颜色,但不幸的是,它们仍被标记为代码块区域,并且仍未突出显示其中的任何其他标记,例如{{ 1}}或_italic_
内联标记。)
答案 0 :(得分:2)
您似乎想要clear那个特定的语法组:
要清除当前缓冲区的特定语法组:
:syntax clear {group-name} ..
这将删除
{group-name}
的所有模式和关键字。
但是您似乎无法清除组的特定定义。只是整个小组:
:syn clear markdownCodeBlock
答案 1 :(得分:1)
一个疯狂的猜测,可以与@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)
这里是一个示例(看看我的光标所在的位置以及屏幕底部关联的高亮显示组):