13

在 vim 中,我正在编辑文件类型为“markdown”的文件,但其中包含诸如 $x_i$ 之类的乳胶数学表达式。Vim 的 markdown 语法高亮认为模式 *_* (letter-underscore-letter) 是错误的,并且将此类模式中的下划线高亮为鲜红色。我想通过在我的 .vimrc 中添加一行来关闭它:

autocmd BufEnter *.Rmd "Dear vim, please don't highlight the pattern *_*"

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

注意:我想保持 markdown 语法突出显示,只关闭该特定功能。

4

2 回答 2

14

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

:syn clear markdownError

但这会导致其他语法规则在该字符上开始一个斜体部分。_最好使用以下命令清除突出显示的错误:

:hi link markdownError Normal

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

:syn match markdownIgnore "\$x_i\$"

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

于 2013-10-02T13:20:16.360 回答
14

如果你想_从 markdown 错误模式中移除,你可以重新定义它。就我而言,我想在一个单词中关闭下划线的错误通知,因为我在我的文档中放置了很多 URL。

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

" Original error pattern
syn match markdownError "\w\@<=_\w\@="

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

" New error pattern without the underscore
syn match markdownError "\w\@<=\w\@="
于 2015-12-24T06:25:24.343 回答