我正在使用 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