使用脚本语言,可以更灵活地定制编辑器以完成复杂的任务。

定义函数

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:firstlinea: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}

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