vim拼写检查-仅在LaTeX文件中提供注释

vim拼写检查-仅在LaTeX文件中提供注释,vim,latex,spell-checking,tex,Vim,Latex,Spell Checking,Tex,我使用gvim编辑LaTex.tex文件。我注意到,它只会动态检查注释文本的拼写。如果我有一个常规文本中的错误-没有下划线。如果我用%注释此文本,拼写错误会立即加下划线。怎么了?是否打开了任何奇怪的选项?latex ft插件方便地定义了这种行为 有一个选项似乎很接近: :syntax spell [toplevel | notoplevel | default] 更新 也 有非常有用的小道消息,比如 Don't Want Spell Checking In Comments? ~ Som

我使用gvim编辑LaTex.tex文件。我注意到,它只会动态检查注释文本的拼写。如果我有一个常规文本中的错误-没有下划线。如果我用%注释此文本,拼写错误会立即加下划线。怎么了?是否打开了任何奇怪的选项?

latex ft插件方便地定义了这种行为

有一个选项似乎很接近:

:syntax spell [toplevel | notoplevel | default]
更新 也

有非常有用的小道消息,比如

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
不想在注释中检查拼写~
有些人喜欢在注释中包含源代码之类的内容,他们也会这样做
建议在LaTeX文件的注释中禁用拼写检查。做
为此,请将以下内容放入您的中:>
设g:tex\u comment\u nospell=1

你必须弄清楚你是否可以使用它/从那里推断出它

我不知道这是否是一个粗糙的黑客攻击和预期的解决方案,但我创建了一个名为.vim/after/syntax/tex.vim的文件 包含一行:

syn match texText "\<\w\+\>" contains=@Spell
因此,它在我的序言中检查得太多了。但是我把它放在了另一个文件中,所以我并不在意。

我也有同样的问题(VIM 7.3),但提供了线索。为了让拼写检查工作正常进行,我必须

syntax spell toplevel
在my
~/.vimrc
中,必须在之后声明

syntax enable


为了让它工作。

我遇到了同样的问题——我的书的第一章的.tex文件拼写检查正常,但第二章的文件只会拼写检查注释。这显然是因为vim没有看到足够多的上下文,并且感到困惑。Ingo Karkat的解决方案为我解决了这个问题。具体而言,我使用了:

syn sync maxlines=2000
syn sync minlines=500

在~/.vim/after/syntax/tex.vim中

tldr;不要将
\section
命令放入主控
.tex
文档中

我也做了同样的观察,我也会坚持“以前,它奏效了,我没有改变任何事情”

然后,我发现这种不必要的行为只发生在
.tex
文档中,我有一个
master.tex
,其中包含作为单独
chapterx.tex
文件的章节。此外,如果所有的
\section
定义都在
chapterx.tex
中,而
master.tex
中的不在中,那么一切都可以正常工作


否则,正如我所想,vim语法和拼写检查例程很难确定它们位于哪个区域,参见。这个问题我发现了相同的问题,但解决方案不同。在某些.tex文件中,拼写检查按预期工作,而在其他文件中没有(documentclass{scrlttr2})。只有在评论中,文字才加了下划线。。。所以我比较了一个正在工作和一个未工作的.tex文档的标题。我发现了一个令人惊讶的文本块,它阻碍了文档本身的拼写检查:

\usepackage{array}
\newenvironment{Conditio}
  {\par\vspace{\abovedisplayskip}\noindent\begin{tabular}{>{$}l<{$} @{${}={}$} l}}
  {\end{tabular}\par\vspace{\belowdisplayskip}}
\usepackage{array}
\新环境{condition}

{\par\vspace{\overdisplayskip}\noindent\begin{tabular}{>{$}l处理主控文档中包含的文件时,此问题经常发生

如果您正在打开一个TeX文件,该文件将被包含,但不包含章节,
\begin{document}
,您可以通过在文件顶部添加
%begin include
来标记它。这样,vim会将文件内容识别为
texDocZone
区域的一部分,从而启用拼写检查

使用
%end include
可以设置
texDocZone
的结尾

此行为似乎没有记录,但在vim语法文件中有描述:


tl;dr:将
%begin include
添加到您的tex文件的顶部。

这里的答案对我都不起作用,但我可以查看我是否在vim中键入了
语法拼写
,作为命令,它会起作用

事实证明,这是因为没有自动为tex文件类型设置语法,我找到了解决方案

仅在TeX注释中检查vim拼写 用vim编辑LaTeX文档时,我注意到它只是拼写检查注释。我修复了这个问题 通过将其添加到我的
/vimrc

autocmd文件类型plaintex、tex、latex语法拼写toplevel


谢谢你的提示。我不认为我使用了任何插件。而且,它在不久前工作得很好,现在它的行为很奇怪。如果你要玩“以前工作过”的游戏,你很快就会发现是什么改变了你自己。否则,看看这些资源,或者我将在第二个+1。
让g:tex\u comment\u nospell=1适用于我的vim 7.3。使用
%
处理注释(根据OP要求),但不适用于
注释
环境。似乎涵盖了后者。对我来说是有效的,但是在启动时抛出了一个vimrc解析错误,说toplevel不是有效选项:``在处理/home/madanh/时检测到错误。`vimrc:line 74:E518:Unknown option:toplevel``好的,即使我只是附加
synta,它也能工作x拼写到my.vimrc.Now没有错误。在Vim 7.4中对我有效。像这样的问题应该被移动到吗?在我的例子中,我使用
输入从一个单独的文件中包括摘要的正文。我将
开始/结束
标记放在摘要文件中,现在它工作了。这很有趣。我又遇到了这个问题,但忘记了这个答案几个月前我就给了。突然我意识到,这个答案(有效!)来自我自己!上面的评论是一个令人尴尬的英语错误:想说“剩菜”而不是宿醉。。。
syntax on
syn sync maxlines=2000
syn sync minlines=500
\usepackage{array}
\newenvironment{Conditio}
  {\par\vspace{\abovedisplayskip}\noindent\begin{tabular}{>{$}l<{$} @{${}={}$} l}}
  {\end{tabular}\par\vspace{\belowdisplayskip}}