启用/禁用
我们可以使用:syntax enable
命令,启用语法高亮度。Vim将会自动识别关键字、字符串以及其他语法元素,并以不同的颜色显示出来。如果不希望高亮显示语法元素,可以使用:syntax clear
命令关闭此功能。
以上命令只在当前文件中有效。而set syntax=off
命令,则会关闭所有缓冲区中文件的语法高亮度;使用:syntax on
命令,则会针对所有缓冲区中的文件启用语法高亮度。
识别文件
Vim通过识别文件的扩展名来选择相应的语法高亮显示。如果没有使用传统的扩展名,那么就需要设置filetype选项,来告诉Vim正在编辑的文件类型。例如使用以下命令,告诉Vim我们正在编辑一个C程序文件:
:set filetype=c
修改语法文件
语法高亮显示,是由位于$VIMRUNTIME/syntax/language.vim中的语法文件来控制的。主要经过两步来实现:首先,确定需要格式化的字符;然后,定义如何显示这些字符(请参看配色方案)。
例如以下命令,将所有FIX和ENDFIX关键字显示为特定颜色:
:syntax match cscFix "FIX\|ENDFIX"
:highlight cscFix ctermfg=cyan guifg=#00FFFF
其中,第一条命令,创建名为cscFix的匹配模式;第二条命令,使用青色显示匹配的文本。
而以下命令,将使用预定义的格式来显示文本:
sy keyword cscCondition IF ELSE ENDIF ELSEIF
hi def link cscCondition Statement
其中,第一条命令,定义包含特定关键字的匹配模式;第二条命令,链接该模式到已存在的格式设置。
通过以下命令,可以获得语法高亮度的帮助信息:
:help syntax
:help usr_44.txt
语法文件实例
使用以下命令,匹配代码的开头和结尾,可用于识别代码注释:
:syntax region myComments start=/\/\*/ end=/\*\//
即使在限定的区域内,我们仍然可以使用以下命令,来格式化特定的语法元素:
:syntax keyword myToDo FIXME TODO
:syntax region myComments start=/\/\*/ end=/\*\// contains=myToDo
其中,第一条命令,定义包含TODO关键字的匹配模式;第二条命令,说明在注释中包含高亮显示的待办事宜。
当然,在contains中可以指定用逗号分隔的多个包含项。这些语法组因而被允许包含在本项目里。这使得匹配和区域的递归嵌套成为可能。在contains参数中,还可以包含以下特殊关键字:
contains=ALL 如果唯一在包含列表里出现的名字是"ALL",那么本项目里可以包含所有的组;
contains=ALLBUT,{group-name}... 如果包含列表的第一个名字是"ALLBUT",那么除了列出的组以外,所有其它的组都可以出现在本项目里。使用:help group-name
命令,可以查看预定义组的帮助信息。
contains=CONTAINED 如果包含列表的第一个名字是 "CONTAINED",那么所有包含"contained" 参数的组都可以接受。
contains=TOP 如果包含列表的第一个名字是"TOP",那么所有不包含"contained"参数的组都可以接受。
例如,以下命令将选择myComments以外的所有组:
:syntax region myCodeblock start=/{/ end=/}/ contains=ALLBUT,myComments
我们还可以使用以下命令,将多个group组合成一个cluster:
:syntax cluster myCluster contains=myKeywords,myConditions
通过在cluster名称之前加上@符号,就可以在命令中引用它们:
:syntax region myComments start=/\/\*/ end=/\*\// contains=@myCluster
新增语法定义
如果需要为已有的语法设置增加内容,当然你可以直接修改内置的语法文件。而更好的方法是,利用Vim的后期处理功能(post-processing):你可以将自定义的语法文件,放入$VIMHOME/after/syntax目录(如果该目录不存在,请手工创建)。当Vim载入脚本、语法和配色时,它也会查找after目录,如果找到相同名称的文件(比如c.vim),那么将会用after目录中文件的内容覆盖原有的设置。
请使用以下命令,查看后期处理的帮助信息:
:help after-directory
新增语法类型
如果想要使用Vim未知的文件类型,那么需要在vimrc文件中进行注册,Vim就能够自动识别新的文件类型并匹配相应的语法高亮度:
augroup filetypedetect
autocmd BufNewFile,BufRead *.my setfiletype my
augroup END
使用以下命令,可以查看关于新增文件类型的帮助信息:
:help new-filetype
网页显示语法高亮度
使用:TOhtml
命令,可以按照当前的颜色定义,将文件转化成(X)HTML文件,以通过网页形式展现高亮显示的代码:
请使用以下命令,查看HTML转换的帮助信息:
help 2html.vim
:syntax enable | 启用语法高亮度 |
:syntax on | |
:syntax clear | 关闭语法高亮度 |
:syntax off | |
:set filetype | 设置文件类型 |
:syntax | 识别语法元素 |
:highlight | 格式化语法元素 |
:set filetype | 设置文件类型 |
:TOhtml | 转换为HTML文件 |