如何配置拼写以忽略LaTeX中的某些环境


10

有没有办法告诉vim不要对乳胶文档的一部分进行拼写检查?例如,代码块使用minted环境或URL中的URL \url{}

(我不确定它是否与拼写检查有关,但我正在使用vimtex插件编辑乳胶文件。)



@Gregoire在vimtex / issues /#219中也提到了这个问题。
Karl YngveLervåg2015年

Answers:


10

您可以通过将语法项与一起添加到集群中来禁用语法项的拼写检查@NoSpell。您可以阅读:help spell-syntax一些信息,并查看tex语法文件,该文件很可能已经包含几个示例。如果键入:tabe $VIMRUNTIME/syntax/tex.vim,应该在新选项卡中获取tex语法文件。如果您随后搜索/\c@NoSpell,可能会看到类似

 syn cluster texMathZoneGroup add=@NoSpell

texMathZoneGroup集群在前面已经在脚本中定义为包含了一些语法项目,并在这里@NoSpell被添加到集群中禁用这些项目的拼写检查。恐怕我无法确切地说出最适合您的特定语法项目的更改,因为我不太了解该语法文件。可能已经有一个明显的群集,您可以在其中简单地添加@NoSpell,或者您可能必须创建一个包含contains=相关项目的群集。最好在用户运行时目录中复制语法文件并在其中应用更改,而不是更改分布式语法文件,或者在after/syntax/tex.vim加载语法文件后运行的其他脚本中应用更改,这也是一个好主意。。

由于您使用的是插件,因此它可能具有与拼写检查哪些项目相关的选项。我不使用,vimtex但是卡尔·勒沃格(KarlLervåg)在这里非常活跃,如果引起他的注意,可以为您解答。


vimtex今天没有这样的选择,没有。但是在铸造环境中忽略拼写似乎很有意义,因此我可能会相应地更新插件。感谢您的解释!
Karl YngveLervåg2015年

我在代码中四处张望,没有找到用于铸造环境的现有区域,因此我尝试创建自己的这样的区域:syn region mintedZone start="\\begin{minted}" end="\\end{minted}" contains=@NoSpell但这似乎无济于事。有什么建议吗?
格雷戈里

@Grégoire请让我们继续在vimtex问题上进行讨论。
Karl YngveLervåg2015年

5

您可以将自己的语法规则添加到例如~/.vim/after/syntax/tex.vim。为了防止在诸如之类的命令中进行拼写检查\url,您可以使用以下代码:

syntax match texStatement '\\command' nextgroup=texMyCommand
syntax region texMyCommand matchgroup=Delimiter start='{' end='}' contained contains=@NoSpell

这里texStatementDelimiter是由内部语法插件定义组,请参阅:e $VIMRUNTIME/syntax/tex.vim

如果您想了解上述命令,我可以推荐以下帮助部分:

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.