创建一个简单的 vim 语法高亮

创建一个简单的 vim 语法高亮

我有一个简单的数据库文件,它由仅有的按照以下格式输入

多变的=价值

我想为其创建一个简单的 vim 语法高亮,并将其设置为特定的文件扩展名

例如,多变的部分可能是浅蓝色,价值部分浅红色

我在谷歌上搜索了一下,发现了诸如、、、和关键词之类的东西$vimruntime\syntax\,但syntax set=最终还是无法自己设置syntax matchhi

所以我想要一个非常简单的 vim 代码片段,通过匹配左侧和右侧并分别着色来实现它

答案1

假设你的文件扩展名是*.foo...

  1. 如果不存在这些文件和目录,则创建它们:

    $HOME/.vim/ftdetect/foo.vim
    $HOME/.vim/syntax/foo.vim
    
  2. 输入以下内容$HOME/.vim/ftdetect/foo.vim

    autocmd BufRead,BufNewFile *.foo set filetype=foo
    
  3. 输入以下内容$HOME/.vim/syntax/foo.vim

    syntax match FooKey   /^[^=]\+/
    syntax match FooValue /[^=]\+$/
    
  4. 将以下几行放在$HOME/.vimrc(或至少任意一行colorscheme):

    highlight FooKey   ctermfg=cyan guifg=#00ffff
    highlight FooValue ctermfg=red  guifg=#ff0000
    
  5. 确保你的某处有以下行~/.vimrc

    syntax on
    

答案2

语法脚本

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

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

syntax match simpleVar "\k\+" nextgroup=simpleAssignment
syntax match simpleAssignment "=" contained nextgroup=simpleValue
syntax match simpleValue ".*" contained

hi def link simpleVar Identifier
hi def link simpleAssignment Statement
hi def link simpleValue String

let b:current_syntax = 'simple'

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

文件类型检测

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

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

autocmd BufNewFile,BufRead *.simple setf simple

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

相关内容