vim:部分LaTeX文件中的拼写检查

vim:部分LaTeX文件中的拼写检查,vim,spell-checking,Vim,Spell Checking,我使用习题集类来输入我的习题集。我经常有一个main.tex文件,看起来像下面这样 \documentclass{problemset} \begin{document} \input{problem1} \end{document} 对于每个问题,我通常有不同的文件。例如,problem1.tex可能如下所示 \begin{problem} there is a spelling errrrrrrror here \end{problem} 我希望vim检测problem1.tex中

我使用习题集类来输入我的习题集。我经常有一个main.tex文件,看起来像下面这样

\documentclass{problemset}

\begin{document}

\input{problem1}

\end{document}
对于每个问题,我通常有不同的文件。例如,problem1.tex可能如下所示

\begin{problem}
there is a spelling errrrrrrror here
\end{problem}
我希望vim检测problem1.tex中的拼写错误,但不幸的是,它没有。如中所述,问题似乎是vim无法识别任何语法区域:当我运行命令时

:echo synIDattr(synID(line("."),col("."),1),"name")
我没有得到任何输出。另一个例子是,如果我将problem1.tex更改为以下内容,则会识别拼写错误

\section{dummy section}
\begin{problem}
there is a spelling errrrrror here
\end{problem}
我曾尝试为我的问题环境创建语法区域,但没有成功。我的尝试包括创建以下.vim/syntax/tex.vim文件

syntax region texProblem start="\\begin{problem}" end="\\end{problem}" contains=@Spell

当我创建这个tex.vim文件时,似乎什么都没有发生。我使用scriptnames检查语法文件是否正在加载(默认语法文件也在我的语法文件之后加载)。按照建议,我还可以通过将文件类型设置为plaintex来标记拼写错误,但这似乎是一个可怕的黑客行为。似乎应该有更好的方法在problem1.tex文件中进行拼写检查。

上述注释对我有效(
syntax-spell-top-level
),此设置即使在以后运行时也适用于我(因此无需从/usr复制任何内容)。但我不希望所有tex文件的设置都处于活动状态-相反,我在my.vimrc中为给定文件自定义了该设置:


我用黑客解决了这个问题。将以下内容添加到文件顶部:

\iffalse{}\section{vim-hack}\fi{}
通过这种方式,vim的语法和拼写算法找到了一些令牌来启动它们,但是由于“if”的原因,latex本身将忽略该部分


(我没有测试更专业的编辑器是否会忽略这个虚拟部分,因此如果同时使用vim和编辑器,可能需要更多的黑客操作。)

正是我的问题。有什么解决方案吗?在
中添加
语法拼写toplevel
。vim/syntax/tex.vim
在我的案例中起作用了。我正在debian wheezy/7.8下运行vim 73的vim latexsuite,它对我也起作用:cp/usr/share/vim/vim73/syntax/tex.vim。添加“语法拼写顶级”,拼写错误现在显示在\include ed文件中。谢谢,斯特林!你能把它重写一下吗?这将是一个体面的回答。
\iffalse{}\section{vim-hack}\fi{}