这是一个非常简单的版本,只会突出显示整个{...}
块。将以下内容放入${HOME}/.vim/syntax/rock.vim
:
if exists("b:current_syntax")
finish
endif
syntax match rockNotation "{[^}]*}"
highlight link rockNotation String
以及以下内容${HOME}/.vim/ftdetect/rock.vim
:
autocmd BufRead,BufNewFile *.rock set filetype=rock
现在,无论何时打开.rock
文件,和弦都应突出显示。(如果检测不起作用,请尝试:set filetype=rock
手动设置,看看它是否改变了一些东西。)请注意,如果您从 Vim 编辑了这些文件,您可能需要重新启动它才能应用效果。
这是一个较长的版本,其中和弦和时间指示以不同的颜色突出显示:
if exists("b:current_syntax")
finish
endif
syntax clear
syntax case match
setlocal iskeyword+=#
setlocal iskeyword+=-
setlocal iskeyword+=+
syntax match rockChord /\<[A-G]\(b\|#\)\=\(m\|-\|dim\|+\|aug\|7\|m7\|Maj7\|m7b5\)\=\(\/[A-G]\(b\|#\)\=\)\=\>/ contained
syntax match rockDuration /[1-9][0-9]*\(hold\|mute\)\=/ contained
syntax region rockAnnotRegion start=/{/ end=/}/ contains=rockChord,rockDuration
highlight link rockChord Type
highlight link rockDuration Constant
highlight link rockAnnotRegion Delimiter
正如你所看到的,我的和弦正则表达式有点疯狂。它支持诸如 之类的东西A#m7b5/Db
,这当然没有什么意义(而且听起来很可怕),但你明白了。