使用脚本语言,可以更灵活地定制编辑器以完成复杂的任务。
定义函数
Vim编辑器允许用户自定义函数,语法如下:
Name,函数名称必须以大写字母开始,并且只可以包含字母、数字和下划线。
arg1-argN,调用函数时需要为命名参数(Named Parameters)赋值。如果不需要任何参数,那么可以将括号()部分置空。最多可以定义20个参数。
keyword,range关键字定义一个范围函数(:function Count_words() range
)会针对范围内的每一行重复执行操作;abort关键字指示函数(:function Do_It() abort
)会在第一个错误时退出。
下面我们来定义一个函数,用来返回两个数中较小的一个:
函数内部的变量(例如smaller)均为局部变量,除非使用了g:作为前缀。例如在函数外我们定义了变量var,那么在函数内部可以使用g:var来调用。前缀a:的变量均为函数参数。
return
语句用于返回结果并结束函数。return语句之后的所有代码都不会被执行。
如果尝试定义一个已经存在的函数,那么将会收到报错信息。可以使用!来强制重定义同名函数。
:function! Max(num1, num2, num3)
Vim允许在函数中使用“...”来标识个数不定的可变参数(Variadic Parameters)。例如以下代码定义函数至少有2个参数,最多有20个参数:
argnum 计数器,用于记录num1和num2之后的参数个数;
a:num1 变量,用于访问指定的参数;
a:0 变量,用于记录参数总个数;
a:{argnum} 变量,用于访问每一个参数的值,例如a:1或a:2;
以下范围函数实例,将在指定范围行内执行替换操作:
当函数被以下命令调用时,变量a:firstline和a:lastline就会被赋值为这个范围内的第一行和最后一行,然后更新范围内的每一行。你可以使用:help cmdline-ranges
命令,查看关于范围操作的更多信息。
:1,$call DeAmperfyAll()
调用函数
可以在表达式中调用函数:
:let tiny = Min(10,20)
还可以使用:call命令来调用函数:
:[range]call {function}([parameters])
列示函数
使用以下命令,可以列出所有用户定义的函数:
:function
使用以下命令,可以查看指定函数的代码:
:function {name}
使用以下命令,可以查看Vim内置函数的使用说明:
:help functions
删除函数
使用以下命令,可以删除指定的函数:
:delfunction {name}