1 / 12
文档名称:

Vim实用技术第三部分.doc

格式:doc   大小:85KB   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Vim实用技术第三部分.doc

上传人:xunlai783 2018/2/6 文件大小:85 KB

下载得到文件列表

Vim实用技术第三部分.doc

相关文档

文档介绍

文档介绍:Vim 实用技术,第 3 部分: 定制 Vim
吴咏炜(wuyongwei@), 软件架构师
吴咏炜,目前从事与开源相关的软件架构工作,可通过 wuyongwei@ 和他联系。
简介: 本系列前面两部分讲的都是如何使用现有的 Vim 系统,本部分则会通过实例来讲如何定制 Vim 的行为。良好的定制可以让使用 Vim 变得更为得心应手;同时,在掌握了基本的定制之后,也许你就会想进一步写一些自己的 Vim 脚本,从而真正地成为一个 Vim 专家。
查看本系列更多内容
标记本文!
发布日期: 2006 年 3 月 22 日
级别: 初级
访问情况 313 次浏览
建议: 0 (添加评论)
平均分(共 0 个评分)
. Vim 脚本基础
文件中,和在第二章提到的插件和语法文件中,使用的语言就是 Vim 脚本语言。这种脚本语言语法有点像 BASIC,表达式有点像 C,还是比较容易理解的。本章中并不打算对其作很系统的介绍(要完整了解的话,请参见“:help ”),而只是介绍一些基本知识,特别是, 所需要的基本知识。
Vim 脚本相当于可直接在命令模式下执行的命令,只是不需要输入前面的冒号(如果用了冒号也不会出错)。因此,像设置选项、创建键盘映射这样的命令是直接可用的。当然,作为一种脚本语言,除了普通键盘上会输入的命令外,我们还需要一些更复杂的功能,特别是:变量,表达式,条件和循环语句,函数。
. 变量
Vim 中使用如下的语法对变量进行赋值(创建变量):
let 变量名= 数值
变量类型有两种,整数和字符串,在第一次赋值之前都不能使用。变量名除了可使用常规的字母、下划线和数字外,还可以使用几种特殊的前缀:
“b:”——只对当前缓冲区(buffer)有效的变量;
“w:”——只对当前编辑窗口(window)有效的变量。
“g:”——全局变量(在函数中访问全局变量必须使用该前缀,不加前缀的话则认为是函数内的局部变量);
“s:”——变量名只在当前脚本中有效;
“a:”——函数的参数;
“v:”——Vim 内部预定义的特殊变量(参见“:help vim-variable”)。
下面三个前缀用来访问特殊的数值,由于行为和变量较为相似(可以读取和修改),也放在这儿一起讲:
“$”——访问环境变量;
“&”——访问 Vim 选项;
“@”——访问寄存器。
当变量不再使用时,可以使用“unlet 变量名”删除变量。
. 表达式
和 C 非常类似,可以使用变量和常量,可以使用括号,可以调用函数(“函数名(...)”),支持加法(“+”)、减法(“-”)、乘法(“*”)、除法(“/”)和取模(“%”),支持逻辑操作(“&&”、“||”和“!”),支持三元条件表达式(“a ? b : c”)。字符串操作方面当然比 C 要强,可以使用“.”进行字符串拼接;可使用“==”、“<=”等进行字符串大小比较,可使用“=~”和“!~”进行正则表达式匹配,而且可以在比较操作符后面添加“#”或“?”来强制进行大小写敏感或不敏感的比较(缺省受 Vim 选项 ignorecase 影响)。显示一个表达式的结果,可以使用“:echo 表达式”显示到状态栏上,或者在插入模式下使用“Ctrl-R=表达式”插入到缓冲区的文本中。
和其它很多在 Unix 下成长起来的语言一样,Vim 的字符串常量有双引号和单引号两种方式。使用单引号的话,单引号间的任何字符都是字符串的一部分,其中不能再包含单引号。使用双引号的话,则可以使用“\”产生换码序列(具体可参考“:help expr-quote”),如“\n”代表换行符,“\"”代表双引号,“\\”代表反斜杠本身,等等。
需要注意的话,双引号除了可以表示字符串常量外,还可以表示注释。行首的“"”,以及表达式中出现的成单的“"”,都表示“"”后面的部分全部是注释。
. 条件和循环语句
条件语句形式如下:
if 表达式
语句
endif

if 表达式
语句
else
语句
endif

if 表达式
语句
elseif 表达式
语句
endif
循环语句形式如下:
while 表达式
语句
endwhile
条件和循环语句都可以嵌套。这些比较简单,就不多加说明了。
. 函数
在表达式中使用函数时,就跟 C 里面的方式类似,直接使用函数名加括号,括号里写上参数(可选)。在不需要返回值的情况下调用函数时,稍稍有些不同,要使用“call”命令,后面跟函数名和括号(括号里面写上可能有的参数)。
定义函数使用下面的语