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

Turn off highlighting a certain pattern in vim

提问人:sieste 提问时间:10/2/2013 最后编辑:sieste 更新时间:12/24/2015 访问量:7780

问:

在 vim 中,我正在编辑一个文件类型为“markdown”的文件,但它包含 latex 数学表达式,例如 $x_i$。Vim 对 Markdown 的语法高亮认为模式 *_*(字母-下划线-字母)是错误的,并在这种模式中突出显示了亮红色的下划线。我想通过在我的 .vimrc 中添加一行来关闭它:

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

执行此操作的适当命令是什么?是否可以在不编辑语法文件的情况下在 .vimrc 中执行此操作?

注意:我想保持 Markdown 语法高亮显示,只关闭该特定功能。

vim vim-语法高亮

评论


答:

18赞 Ingo Karkat 10/2/2013 #1

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

:syn clear markdownError

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

:hi link markdownError Normal

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

:syn match markdownIgnore "\$x_i\$"

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

评论

0赞 sieste 10/2/2013
那行得通,谢谢。有没有办法仅将其应用于特定模式?(否则我会接受你的回答)
0赞 Ingo Karkat 10/2/2013
这确实更好;我已经添加了。
0赞 sieste 10/2/2013
这也适用于 vimrc。我输入的行是autocmd BufNewFile,BufRead,BufEnter *.Rmd,*.rmd :syn match markdownIgnore "\$.*_.*\$"
0赞 sieste 10/2/2013
...行后autocmd *.Rmd,*.rmd set filetype=markdown
1赞 Ingo Karkat 10/2/2013
尝试 ,但这必须在 in your 之后出现。如果这仍然不起作用,请尝试在它前面加上它。:autocmd Syntax markdown syn match markdownIgnore "\$x_i\$":syn on.vimrc:autocmd VimEnter * ...
20赞 Sanghyun Lee 12/24/2015 #2

如果要从 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\@="

评论

1赞 Durga Swaroop 1/11/2016
我已经添加了更改的文件,但它仍然给出下划线错误after/syntax
0赞 Sanghyun Lee 1/12/2016
@DurgaSwaroop 还在吗?
1赞 xeruf 6/17/2020
~/.config/nvim/after/syntax对于 neovim btw :)对我来说非常有效
0赞 irritable_phd_syndrome 12/17/2021
这适用于 OSX 10.15.7 上的 vim-8.1。公认的解决方案对我不起作用。
0赞 Niels Tolstrup 10/19/2022
添加 .vimrc 文件对我有用。" 2022-10-19 prevent "_" highlight in .Rmd filesautocmd BufNewFile,BufRead,BufEnter *.Rmd,*.rmd syn match markdownIgnore "\w\@<=\w\@="