Vim语法:拼写检查一些字符串,但不检查其他字符串

时间:2017-11-15 18:24:19

标签: vim vim-syntax-highlighting

这是Vim syntax: Spell checking between certain regions的后续内容我正在尝试为此语言创建一个名为Sugar Cube 2的语法文件。您可以在此处找到更多相关信息:http://www.motoslave.net/sugarcube/2/docs/macros.html

link具有以下语法:<<link "linkText" "passageName">>例如:

<<link "Onward, Reginald!" "ThePassageName">>

我想拼写检查“Onward,Reginald!”但不是“ThePassageName”。我怎么做?我试着乱搞这样的线条,但我想我的方向是错误的:

syn region noSpellString  start=+"+ end=+"+ skip=+\\"+ contains=@NoSpell
syn region spellString  start=+"+ end=+"+ skip=+\\"+ nextgroup=noSpellString
syn match linkMacro "<<link\s+" nextgroup=spellString skipwhite skipempty

1 个答案:

答案 0 :(得分:0)

你的方法对我很好。如果字符串可以跨越多行,:syn region是正确的选择。对于单行字符串,:syn match(具有跳过包含转义引号的合适模式)会更好。

你的例子几乎可以运作:

  • linkMacro模式需要使用\s\+来匹配。
  • spellString缺少skipwhite
syn region noSpellString  start=+"+ end=+"+ skip=+\\"+ contains=@NoSpell
syn region spellString  start=+"+ end=+"+ skip=+\\"+ nextgroup=noSpellString skipwhite
syn match linkMacro "<<link\s\+" nextgroup=spellString skipwhite skipempty

对于语法脚本,所有语法组都应以等于语法名称的前缀开头。因此,syntax/sugarcube2.vim应具有sugarcube2LinkMacrosugarcube2SpellString等语法名称。