vim 中的简单自定义语法

vim 中的简单自定义语法

我希望.vm扩展名为 vim 的文件能够:

  • 将两个反引号之间的所有单词涂成红色,例如`this`
  • 用黄色表示两美元之间的距离$this is in yellow$
  • #并将该行与行末之间的所有单词涂成绿色。

答案1

语法脚本

~/.vim/syntax/vm.vim创建一个包含以下内容的文件:

" Quit when a syntax file was already loaded.
if exists('b:current_syntax') | finish|  endif

syntax match vmBackticks "`\zs[^`]\+\ze`"
syntax match vmDollars "\$\zs[^$]\+\ze\$"
syntax match vmComment "#.*$"

hi def link vmBackticks Identifier
hi def link vmDollars Statement
hi def link vmComment Comment

let b:current_syntax = 'vm'

如果您想在突出显示中包含反引号/美元,只需删除\zsand \ze

这与三个语法元素相匹配,并提供默认颜色。通常不定义显式颜色,而是链接到默认突出显示组由您的配色方案定义。您可以通过 列出所有:hi。要进行调整,请阅读:help :syntax:help usr_44.txt,并查看 Vim 附带的语法脚本。

文件类型检测

到目前为止,您必须手动:set syntax=vm激活。要自动执行此操作,您必须教 Vim 了解您的新文件类型

~/.vim/ftdetect/vm.vim创建一个包含以下内容的文件:

autocmd BufNewFile,BufRead *.vm setf vm

这假设可以通过文件名 (cp. ) 识别文件:help autocmd-patterns。您还可以根据路径 (文件位置) 甚至内容进行检测。:help new-filetype有详细信息。

相关内容