简介

最初接触到 Vim 脚本是在 vimrc 文件里。当 Vim 启动时它将读取该文件的内容并执行其中的命令。 你可以在其中设置选项。也可以在其中使用任何冒号命令 (以 “:” 开头的命令;这些命令有时也被称作 Ex 命令或命令行命令)。

语法文件其实也是 Vim 脚本(专为某种文件类型设定选项的文件也是)。一个很复杂的宏可以被单独的定义在一个 Vim 脚本文件中。

让我们从一个简单的例子开始:

:let i = 1
:while i < 5
:  echo "count is" i
:  let i += 1
:endwhile

Note

那些 : 字符并非必须。只有在键入命令时才需要,在编写脚本时可以去掉。在这里使用一是为了清楚,二是为了区别于普通模式命令。

可以拷贝这里的示例文本,然后用 :@" 执行,或保存成文件后用 :source /path/script.vim 执行。

本例的输出是:

count is 1
count is 2
count is 3
count is 4

第一行的 :let 命令给一个变量赋值。通常的用法是:

:let {变量} = {表达式}

在例子中变量名是 i 而表达式是一个简单的数值 1。 :while 命令开始一个循环。通常的用法是:

:while {条件}
:  {语句}
:endwhile

只要条件为真, while:endwhile 包围的语句就会被执行。在例子中使用的条件是表达式 i < 5 。这个条件在变量 i 小于 5 时总是真的。

如果你碰巧写了一个死循环语句,你可以用 CTRL-C 来终止(在 MS-Windows 上使用 CTRL-Break)。

:echo 命令显示它的参数。在这个例子中的参数是字符串 count is 和变量 i 的值。因为开始时 i 的值是 1,所以将会显示:

count is 1

接着是 :let i += 1 命令。该命令相当于 :let i = i + 1 。在变量 i 上加一并将新的值赋给同一个变量。

给出本例是为了解释命令,不过如果你真的要写这样一个循环,下面的表达更加简洁:

:for i in range(1, 4)
:  echo "count is" i
:endfor

三种数值

数值可以是十进制,十六进制,或者八进制的。以 0x0X 开始的数值是十六进制的。例如 0x1f 代表十进制 31。以零开始的数值是八进制的。 017 代表十进制 15。

当心: 不要在十进制数前添上零,那样该数值将会被作为八进制数对待! :echo 命令总以十进制格式显示数值。例:

:echo 0x7f 036
127 30

在一个数值前加上减号会将其变为负值。十六进制数和八进制数亦然。减号也用于减法操作。将下例与前面的比较:

:echo 0x7f -036
97

表达式中的空白字符将被忽略。然而,为了增加表达式的易读性,建议用来分隔不同的项目。例如,为了不和上面的负号混淆,在减号和之后的数字前加入一个空格:

:echo 0x7f - 036