关闭在vim中突出显示某个模式

sie*_*ste 5 vim vim-syntax-highlighting

在vim中,我正在编辑文件类型为"markdown"的文件,但其中包含乳胶数学表达式,如$ x_i $.对于markdown,Vim的语法突出显示模式*_*(字母 - 下划线字母)是一个错误,并突出显示这些模式中的下划线为鲜红色.我想通过在我的.vimrc中添加一行来关闭它:

autocmd BufEnter *.Rmd "Dear vim, please don't highlight the pattern *_*"
Run Code Online (Sandbox Code Playgroud)

这样做的适当命令是什么?是否可以在.vimrc中执行此操作,而无需编辑语法文件?

注意:我想保持降价语法一般突出显示,只关闭该特定功能.

Ing*_*kat 8

您必须为此修改Markdown语法.一种方法是删除错误的解析:

:syn clear markdownError
Run Code Online (Sandbox Code Playgroud)

但这会导致其他语法规则在该char 上启动斜体部分_.更好地清除错误突出显示:

:hi link markdownError Normal
Run Code Online (Sandbox Code Playgroud)

要维护一般错误突出显示,但只定义特殊$x_i$字符串的异常,请定义覆盖语法组; 幸运的是,这很容易,因为没有现有的语法:

:syn match markdownIgnore "\$x_i\$"
Run Code Online (Sandbox Code Playgroud)

(调整正则表达式以匹配所有可能的数学表达式.)这需要在原始语法脚本之后~/.vim/after/syntax/markdown.vim执行.


San*_*Lee 6

如果_要从降价错误模式中删除,可以重新定义它.在我的情况下,我想在一个单词中关闭下划线的错误通知,因为我在我的文档中放了很多URL.

有一行定义syntax/markdown.vim文件中的错误模式

" Original error pattern
syn match markdownError "\w\@<=_\w\@="
Run Code Online (Sandbox Code Playgroud)

_从模式中删除并添加到~/.vim/after/syntax/markdown.vim.

" New error pattern without the underscore
syn match markdownError "\w\@<=\w\@="
Run Code Online (Sandbox Code Playgroud)