Vim语法:在某些区域之间进行拼写检查

时间:2017-11-14 22:25:48

标签: vim vim-syntax-highlighting

我正在尝试为此语言创建一个名为Sugar Cube 2的语法文件。您可以在此处找到更多相关信息:http://www.motoslave.net/sugarcube/2/docs/macros.html

通常,我不想在宏之间进行拼写检查(例如<<myDescription "This is a string that should be in english">> )。但是,你可以创建自己的宏,而我碰巧创建了一个这样的宏:

syntax

如你所见,&#34;英语&#34;应该大写,因此在这种情况下进行拼写检查会很有用。

我已经了解了vim的keyword。它是matchregion@NoSpellsyn-priority等等。但我真的很难将这些概念放在一起以实现我想要的目标:在特定宏之间进行拼写检查,但不是所有宏。这是我的想法,它利用了syn match macroDelimiter "\v(<<|>>)" " there's much more keywords than this syn keyword macroKeywords contained if elseif else myDescription syn region mostMacros matchgroup=macroKeywords start="<<" end=">>" contains=@NoSpell syn region myMacro matchgroup=macroKeywords start="<<myDescription" end=">>" 中描述的概念:

myDescription

我的意思是......我尝试过它并且有效。我不喜欢的一件事是myDescription如何突出显示就像斜角括号一样。我也不喜欢单词set spell spelllang=en_us syn match macroDelimiter "\v(<<|>>)" " there's much more keywords than this syn keyword macroKeywords contained if elseif else myDescription syn region macroString start=+"+ end=+"+ skip=+\\"+ syn region mostMacros matchgroup=macroDelimiter start="<<" end=">>" contains=@NoSpell,macroString "Notice how this is commented out "syn region myMacro matchgroup=macroDelimiter start="<<myDescription" end=">>" hi link macroKeywords Keyword hi link macroDelimiter Constant 本身是如何拼写检查的,但我可以忍受这个单词。有没有办法解决这些问题?

这将解决上述问题:

<<link>>

但它增加了一个主要问题:还有其他带字符串的宏。 <<goto>>logging.path宏也有字符串。但是我不想拼写那里的字符串。

1 个答案:

答案 0 :(得分:1)

要摆脱matchgroup的{​​{1}}突出显示,但仍然强制执行匹配,请通过myDescription结束群组的开头:

\ze

这将为syn region myMacro matchgroup=macroKeywords start="<<\zemyDescription" end=">>" contains=@Spell 本身启用拼写。为避免这种情况,您必须将其语法从myDescription变为keyword,以便向其添加match

contains=@NoSpell