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

Kri*_*ian 31 vim latex spell-checking region

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

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

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

:echo synIDattr(synID(line("."),col("."),1),"name")
Run Code Online (Sandbox Code Playgroud)

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

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

理想情况下,我非常想要一个确保不会发生这种情况的解决方案,但我也会选择一种方法来手动使vim'更新'它所在的区域,而不必移动光标.在后一种情况下,我正在考虑一种可以用于捷径的解决方案.

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

小智 40

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

为此,请编写命令:

syntax spell toplevel
Run Code Online (Sandbox Code Playgroud)

在文件中~/.vim/after/syntax/tex.vim.如果文件不存在,请生成该文件.

  • 也许很明显,但它让我难住了;必须先使用“setpell”才能起作用。 (2认同)

Ing*_*kat 21

syntax/tex.vim已经使用了相当精细的同步模式来确保语法高亮是准确的,但对于长而复杂的文档,这可能仍然失败.

你能做的最好的就是努力增加两个值

syn sync maxlines=200
syn sync minlines=50
Run Code Online (Sandbox Code Playgroud)

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

syntax sync fromstart
Run Code Online (Sandbox Code Playgroud)

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