我有一个简单的数据库文件,它由仅有的按照以下格式输入
多变的=价值
我想为其创建一个简单的 vim 语法高亮,并将其设置为特定的文件扩展名
例如,多变的部分可能是浅蓝色,价值部分浅红色
我在谷歌上搜索了一下,发现了诸如、、、和关键词之类的东西$vimruntime\syntax\
,但syntax set=
最终还是无法自己设置syntax match
hi
所以我想要一个非常简单的 vim 代码片段,通过匹配左侧和右侧并分别着色来实现它
答案1
假设你的文件扩展名是*.foo
...
如果不存在这些文件和目录,则创建它们:
$HOME/.vim/ftdetect/foo.vim $HOME/.vim/syntax/foo.vim
输入以下内容
$HOME/.vim/ftdetect/foo.vim
:autocmd BufRead,BufNewFile *.foo set filetype=foo
输入以下内容
$HOME/.vim/syntax/foo.vim
:syntax match FooKey /^[^=]\+/ syntax match FooValue /[^=]\+$/
将以下几行放在
$HOME/.vimrc
(或至少后任意一行colorscheme
):highlight FooKey ctermfg=cyan guifg=#00ffff highlight FooValue ctermfg=red guifg=#ff0000
确保你的某处有以下行
~/.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
有详细信息。