星期四, 二月 10, 2011

VIM学习笔记 语法高亮度 (Syntax)

启用/禁用

我们可以使用: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 cscConditionStatement

其中,第一条命令,定义包含特定关键字的匹配模式;第二条命令,链接该模式到已存在的格式设置。

通过以下命令,可以获得语法高亮度的帮助信息:

:help syntax

:help usr_44.txt

语法文件实例

使用以下命令,匹配代码的开头和结尾,可用于识别代码注释:

:syntax region myComments start=/\/\*/ end=/\*\//

即使在限定的区域内,我们仍然可以使用以下命令,来格式化特定的语法元素:

:syntax keyword myToDo FIXME TODO

:syntax region myComments start=/\/\*/ end=/\*\// contains=myToDo

其中,第一条命令,定义包含TODO关键字的匹配模式;第二条命令,说明在注释中包含高亮显示的待办事宜。

Syntax_contains

当然,在contains中可以指定用逗号分隔的多个包含项。这些语法组因而被允许包含在本项目里。这使得匹配和区域的递归嵌套成为可能。在contains参数中,还可以包含以下特殊关键字:

contains=ALL 如果唯一在包含列表里出现的名字是"ALL",那么本项目里可以包含所有的组;

contains=ALLBUT,{group-name}... 如果包含列表的第一个名字是"ALLBUT",那么除了列出的组以外,所有其它的组都可以出现在本项目里。

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未知的文件类型,那么需要在$VIMHOME/filetype.vim文件中进行注册:

augroup filetypedetect

autocmd BufNewFile,BufRead *.my setfiletype my

augroup END

在filetype.vim文件中增加以上命令后,Vim就能够自动识别新的文件类型并匹配相应的语法高亮度。

使用以下命令,可以查看关于新增文件类型的帮助信息:

:help new-filetype

网页显示语法高亮度

使用:TOhtml命令,可以按照当前的颜色定义,将文件转化成(X)HTML文件,以通过网页形式展现高亮显示的代码:

TOhtml

请使用以下命令,查看HTML转换的帮助信息:

help 2html.vim

命令小结
:syntax enable启用语法高亮度
:syntax on
:syntax clear关闭语法高亮度
:syntax off
:set filetype设置文件类型
:syntax识别语法元素
:highlight格式化语法元素
:set filetype设置文件类型
:TOhtml转换为HTML文件

Ver: 1.0<上一篇 | 目录 下一篇>

没有评论:

发表评论