Vim拼写检查filetype=tex文件

4
我的vim拼写检查在打开以.tex结尾的文件时无法正常工作。
如果我有一个名为foo.txt的文本文件,在vim中打开并执行:set spell,我会看到拼写错误的单词被突出显示,我可以使用]s移动到它们,使用z=获得更正选项。如果我将foo.txt重命名为foo.tex并在vim中打开它,:set spell不起作用,]s也不起作用,但是当光标停留在单词上时,输入z=将提供更正选项。
当我在vim中打开foo.tex并执行:set filetype时,我会看到filetype=tex。如果我改为执行:set filetype=latex,则:set spell和]s等都能正常工作。
如何使拼写检查与.tex文件类型的文件一起工作?注意,我只想在显式执行:set spell时进行拼写检查,我不希望默认情况下启用它。
2个回答

9

tex 文件类型指定应该拼写检查哪些语法区域,而不是让整个缓冲区进行拼写检查。这样做是为了避免标记被误报为拼写错误而不必实际进行拼写检查。

还有一些变量可以调整哪些区域进行拼写检查,如 :help ft-tex-syntax 中所述:

                        *g:tex_nospell*
 Tex: No Spell Checking Wanted~

If you don't want spell checking anywhere in your LaTeX document, put >
    let g:tex_nospell=1
into your .vimrc.  If you merely wish to suppress spell checking inside
comments only, see |g:tex_comment_nospell|.

                *tex-nospell* *g:tex_comment_nospell*
 Tex: Don't Want Spell Checking In Comments? ~

Some folks like to include things like source code in comments and so would
prefer that spell checking be disabled in comments in LaTeX files.  To do
this, put the following in your <.vimrc>: >
      let g:tex_comment_nospell= 1
If you want to suppress spell checking everywhere inside your LaTeX document,
see |g:tex_nospell|.

                *tex-verb* *g:tex_verbspell*
 Tex: Want Spell Checking in Verbatim Zones?~

Often verbatim regions are used for things like source code; seldom does
one want source code spell-checked.  However, for those of you who do
want your verbatim zones spell-checked, put the following in your <.vimrc>: >
    let g:tex_verbspell= 1

当你使用命令set filetype=latex时,它能够生效的原因是没有latex文件类型(除非你已经下载了一个)。tex文件类型的所有语法规则都被清空,因此整个缓冲区都会进行拼写检查,这是默认行为,即当未定义任何语法级别的拼写检查时。
如果你不希望拼写检查仅限于特定的语法区域,可以将以下内容添加到~/.vim/after/syntax/tex.vim中。
syntax spell toplevel

非常有启发性。我真傻,还设置了set filetype=latex。我没有意识到这只是将文件设置为没有类型。我以为有一个LaTeX文件类型,因为我看到过像let g:tex_flavor = "latex"这样的命令。 - mjandrews
syntax spell toplevel not top-level - user67416
@g33kz0r 谢谢,已修复。 - jamessan

0

我有很多.tex文件需要进行vim spell检查。尽管所有的文件都非常相似(大多数是普通句子),每个文件都以.tex结尾,但有时候vim会设置filetype=tex,而其他时候则设置filetype=plaintex。如果filetype=tex,那么vim spell将不会检查我的拼写。如果filetype=plaintex,那么vim spell将按照我期望的方式检查我的文本。

我不得不在我的.vimrc文件中创建一个映射,将一个键映射到:set filetype=plaintex。这解决了我的问题,现在vim spell检查文件的方式正如我所期望的那样,尽管我仍然不明白为什么vim会以不同的方式识别我的一些文件和其他文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接