提问人:sieste 提问时间:10/2/2013 最后编辑:sieste 更新时间:12/24/2015 访问量:7780
关闭在 vim 中突出显示某个模式
Turn off highlighting a certain pattern in vim
问:
在 vim 中,我正在编辑一个文件类型为“markdown”的文件,但它包含 latex 数学表达式,例如 $x_i$。Vim 对 Markdown 的语法高亮认为模式 *_*(字母-下划线-字母)是错误的,并在这种模式中突出显示了亮红色的下划线。我想通过在我的 .vimrc 中添加一行来关闭它:
autocmd BufEnter *.Rmd "Dear vim, please don't highlight the pattern *_*"
执行此操作的适当命令是什么?是否可以在不编辑语法文件的情况下在 .vimrc 中执行此操作?
注意:我想保持 Markdown 语法高亮显示,只关闭该特定功能。
答:
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 files
autocmd BufNewFile,BufRead,BufEnter *.Rmd,*.rmd syn match markdownIgnore "\w\@<=\w\@="
评论