Vim拼写检查并不总是在.tex文件中工作。检查Vim地区

时间:2014-04-28 23:37:30

标签: vim latex spell-checking region

我使用Vim来编写我的.tex文件,但我在使用Vim中的拼写检查程序时遇到了问题。有时它不检查单词,我认为可能是由于以下原因。

由于Vim显然不应该检查.tex文档中的所有单词,例如,不是前导码,它只检查某些区域的拼写(在语法意义上)。正如我从here收集的那样,其中一个区域是texSectionZone。这些区域可能变得非常大,实际上通常是一个区域,因此Vim很难意识到它实际上位于texSectionZone区域(或其他区域),因此不会检查拼写。如果我在文档中进行搜索,或者跳过多行(或更确切地说是页面)的任何类型的跳转,就会发生这种情况。

我得出结论的方式可能是以下原因:我知道命令

:echo synIDattr(synID(line("."),col("."),1),"name")

打印你所在的地区/地区的名称(我发现它here),所以当拼写检查工作不起作用时我尝试了这个,它告诉我它根本不在任何地区。它工作的地方,我在一个应该检查拼写的区域。

到目前为止,我唯一的解决方案是找到我想要拼写检查点的最近部分,然后手动将光标向下移动到给定点。

理想情况下,我非常希望能够确保不会发生这种情况的解决方案,但我也会采用一种方法来手动制作vim'更新'它在哪个区域,没有我必须移动光标很多。在后一种情况下,我正在考虑一种可以用于捷径的解决方案。

PS我怀疑该怎么称呼这个问题。如果你想出一个可以更好地解释问题的标题,可以自由地改变它。

2 个答案:

答案 0 :(得分:34)

在没有定义语法组(或由vim找到)的情况下,不进行拼写检查。我发现甚至对未定义的组启用拼写检查也很有用(请参阅vim的语法文档中的 toplevel )。

为此,请编写命令:

syntax spell toplevel

在文件~/.vim/after/syntax/tex.vim中。如果文件不存在,请创建该文件。

答案 1 :(得分:20)

syntax/tex.vim已经使用了非常精细的同步模式来确保语法突出显示是准确的,但对于长文档和复杂文档,这可能仍会失败。

你可以做的最好的事情是尝试增加

的两个值
syn sync maxlines=200
syn sync minlines=50

(例如2000和500)。将其放在~/.vim/after/syntax/tex.vim中以覆盖默认值。

syntax sync fromstart

可能会给出最好的结果,但可能会太慢。您可以在:help :syn-sync找到语法同步的说明。