vim-spell:排除自定义 LaTeX 命令

vim-spell:排除自定义 LaTeX 命令

我正在使用 Vim(带有 vim-latex)来编写我的 LaTeX 文档。

我制作了一堆自定义命令来标记我在文本、公式和代码清单中使用的不同类型的“变量”(如编程语言中的变量)。我总是将变量名称包装在命令中,以确保文本格式一致,并能够在以后方便地更改格式。

通常,命令(例如\somevariable{somename})不包含拼写正确的名称。问题是,Vim 的拼写检查器会将我的所有变量名称标记为错误,这会使拼写检查变得混乱(例如,当我想在错误之间进行检查时)。

另一个例子是 TikZ 图片,其中我的图表的节点名称被标记为拼写错误。

{是否有一种(最好是简单的)方法可以将自定义命令的内容(和里面的内容})从拼写检查中排除?

(我已经找到了这个问题但这并不是我想要的,因为它只处理标准命令/环境,而在这里添加我所有的自定义命令相当麻烦)

答案1

您可以使用 手动完成syn match。例如,您的问题\somevariable可以通过以下方式解决:

syn match texSomevariable "\\somevariable{[^}]\{-}}"hs=s+14,he=e-1 containedin=texStatement contains=@NoSpell

这将禁用 之间{}之后的拼写检查\somevariable。(它假定您未}在参数内部使用。)

根据文档中您不想使用拼写检查的部分的复杂程度,执行类似操作可能会变得非常复杂。您使用 Tikz 的示例似乎很难,但上面的解决方案应该可以适用于somevariable其他任何情况。

编辑: 如果您希望默认情况下也突出显示{},则应将其包括texDelimiter在内contains,以便它变成contains=@NoSpell,texDelimiter而不是contains=@NoSpell

编辑:\somevariable如果匹配某些特殊内容,例如,则 可能会出现问题\cite。由于\cite用 突出显示texRefZone,因此应将其添加到containedin,因此命令应为:

syn match texSomevariable "\\cite{[^}]\{-}}"hs=s+6,he=e-1 containedin=texStatement,texRefZone contains=@NoSpell

相关内容