我使用latex-suite
vim 插件,该插件会在 vim 编辑器中内联显示错误。但是,对于某些环境,例如,我会得到误报lstlistings
。我该如何配置latex-suite
以忽略这些环境?
答案1
我这样做的方法是让lstlisting
环境(以及任何其他有此问题的环境)具有与verbatim
环境相同的语法高亮:单一彩色块,带有特殊的 TeX 符号,$
并%
像普通文本一样处理。
这意味着您可以完全无需担心latex-suite
:latex-suite
不会改变你的语法高亮。第一步是确保您的.tex
文件语法高亮,您可能已经这样做了。如果没有,请将以下内容放入您的.vimrc
:
filetype on
au BufRead,BufNewFile *.tex,*.sty,*.cls set filetype=tex
au FileType tex syntax on
事实证明,对于 vim 的 LaTeX 语法高亮器来说,verbatim
环境定义了一个texZone
区域,所以我们需要做的就是确保lstlisting
环境也定义了一个texZone
区域:
au filetype tex syntax region texZone start='\\begin{lstlisting}' end='\\end{lstlisting}'
这个咒语的意思是“当我们处理 TeX 文件时,texZone
将地区之间\begin{lstlisting}
。\end{lstlisting}
”
然后,重新加载文件,verbatim
环境lstlisting
看起来就会相同。
当然你也可以lstlisting
用其他有此问题的环境来替换。
注意事项
- 如果您使用非默认的 TeX 语法高亮语言定义,则可能不起作用。(可以使用不同的配色方案。)但在这种情况下,您仍然可以通过在环境中的命令模式下
verbatim
键入来确定环境代表的语法项,然后使用返回的语法组而不是。:echom synIDattr(synID(line("."), col("."),1),"name")
verbatim
texZone
- 此解决方案不处理 的可选环境参数
lstlistings
;因为这是 LaTeX 代码而不是列表的一部分,所以语法高亮可以反映这一点。我不知道该怎么做,这可能会成为一个困难的解析/正则表达式问题(因为它可能包含嵌套括号)。 - 显然,vim 的共识
latex-suite
是不是一个好的插件;此链接推荐了几种替代方案。