我使用Vim来编写我的.tex
文件,但我在使用Vim中的拼写检查程序时遇到了问题。有时它不检查单词,我认为可能是由于以下原因。
由于Vim显然不应该检查.tex
文档中的所有单词,例如,不是前导码,它只检查某些区域的拼写(在语法意义上)。正如我从here收集的那样,其中一个区域是texSectionZone
。这些区域可能变得非常大,实际上通常是一个区域,因此Vim很难意识到它实际上位于texSectionZone
区域(或其他区域),因此不会检查拼写。如果我在文档中进行搜索,或者跳过多行(或更确切地说是页面)的任何类型的跳转,就会发生这种情况。
我得出结论的方式可能是以下原因:我知道命令
:echo synIDattr(synID(line("."),col("."),1),"name")
打印你所在的地区/地区的名称(我发现它here),所以当拼写检查工作不起作用时我尝试了这个,它告诉我它根本不在任何地区。它工作的地方,我在一个应该检查拼写的区域。
到目前为止,我唯一的解决方案是找到我想要拼写检查点的最近部分,然后手动将光标向下移动到给定点。
理想情况下,我非常希望能够确保不会发生这种情况的解决方案,但我也会采用一种方法来手动制作vim'更新'它在哪个区域,没有我必须移动光标很多。在后一种情况下,我正在考虑一种可以用于捷径的解决方案。
PS我怀疑该怎么称呼这个问题。如果你想出一个可以更好地解释问题的标题,可以自由地改变它。
答案 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
找到语法同步的说明。