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

Vim拼写检查不总是在.tex文件中工作。检查Vim中的区域,vim,latex,spell-checking,region,Vim,Latex,Spell Checking,Region,我使用Vim编写.tex文件,但是我在Vim中的拼写检查程序方面遇到了问题。有时它不检查单词,我想可能是因为以下原因 由于Vim显然不应该检查.tex文档中的所有单词,例如,不检查序言,因此它只检查某些区域的拼写(在语法意义上)。正如我从中收集的,其中一个区域是texSectionZone。这些区域可能会变得相当大,实际上一个部分通常都很大,因此Vim很难意识到它实际上位于texSectionZone区域(或其他区域),因此不会检查拼写。如果我在文档中进行搜索,或者跳过多行(或者更确切地说是多页

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

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

我得出结论的原因可能是:我知道

:echo synIDattr(synID(line("."),col("."),1),"name")
打印您所在区域的名称(我找到了它),因此当拼写检查器不起作用时,我尝试了这个方法,它告诉我它根本不在任何区域中。在它起作用的地方,我所在的地区应该检查拼写

到目前为止,我唯一的解决方案是找到我希望拼写者检查的点上方最近的部分,然后手动将光标移回给定点

理想情况下,我非常希望有一个解决方案可以确保不会发生这种情况,但我也会满足于手动让vim“更新”它所在的区域,而不必经常移动光标。在后一种情况下,我正在考虑一种可以走捷径的解决办法


PS我不知道该怎么称呼这个问题。如果你想出了一个能更好地解释问题的标题,可以随意更改。

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

您所能做的最好是尝试增加

syn sync maxlines=200
syn sync minlines=50
(例如到2000年和500年)。将其放入
~/.vim/after/syntax/tex.vim
以覆盖默认值

syntax sync fromstart

可能会给出最好的结果,但可能太慢。您可以在
:help:syn sync

中找到语法同步的说明,在未定义语法组(或vim未找到语法组)的情况下,不会执行拼写检查。我发现即使对未定义的组启用拼写检查也很有用(请参阅vim语法文档中的toplevel)

为此,请编写以下命令:

syntax spell toplevel

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

这正是我要找的。我试着读入
:help sync syn
,但我必须承认我并不真正理解事情是如何运作的。Vim如何更新语法?是某个地方做出的选择。也许这让人困惑。我想问的可能是:如果我从一开始运行
syntax sync
,它是否会从文档的开头更新语法一次,或者它是否会告诉Vim它应该始终从一开始就进行语法同步;如果这并没有使Vim速度减慢太多,请坚持下去!可以网络上的大多数地方,在人们提出建议的地方,他们都会发出声音,因为这只是一次。如果我在之后运行
:syn sync maxlines=200
:syn sync minlines=50
,我是否会将其设置回正常(默认设置)?这只需要设置一次,最好是在我的答案中提到的后一个目录中。可能很明显,但这让我感到困惑;必须先使用
设置法术
,然后才能生效。