所需的语法高亮显示如下:
世界:地球及其上的所有人和事 [Hello, world !]
这是一个字典单词,在':'后面有一个解释,在'['和']'之间有一个例句。突出显示了三个部分:
我无法突出以上所有内容。最糟糕的是,我甚至无法使用以下规则突出显示简化语法,即':'之前和之后的同一个词:
syntax match Keyword "^[^:]*"
syntax match Underlined "^\([^:]*\):.*\zs\1"
任何人都可以提供完整的答案吗?谢谢!
答案 0 :(得分:0)
在.vim/syntax
为您的语言添加新文件,例如: mylang.vim
使用区域分隔语法的组件,如下所示。
然后,您可以将这些区域链接到您的colorscheme中的其他突出显示组(例如Identifier
,String
),或者为它们使用自定义颜色。
syn region mylangHeader start=+^+ end=+:+
syn region mylangDesc start=+\[+ end=+]+
syn region mylangRow start=+^+ end=+$+ contains=mylangHeader,mylangDesc
hi! link mylangHeader Identifier
hi! link mylangRow String
hi! mylangDesc guifg=#00ff00
编辑文件后,set ft=mylang
将触发此语法突出显示。如果需要,您可以在.vimrc
中自动设置文件类型(基于文件扩展名)。
答案 1 :(得分:0)
以下正则表达式如何:([^:]*):[^\[]*\[(.*)\]
?见http://regex101.com/r/oO0cD9。
第一个匹配组是冒号前的文本,第二个匹配组是括号中的文本。
以下正则表达式中的更新::([^:]*):[^\[]*\[(.*(\1).*)\]
第三个匹配组将根据您的请求为您提供示例句中的单词。见http://regex101.com/r/rA6aT5