这是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
答案 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
应具有sugarcube2LinkMacro
,sugarcube2SpellString
等语法名称。