注释
在写脚本时,经常需要在源码里面添加一些注释信息,辅助阅读源码,VIM 脚本注释比较简单,是以 "
开头的,只存在行注释,不存在块注释。因此,对于多行注释,需要再每行开头添加 "
。示例:
" 这是一行注释,
let g:helloworld = 1 " 这是在行尾注释
变量
在 VIM 脚本里,可以使用关键字 let
来申明变量,最基本的方式为:
" 定义一个类型是字符串的变量 g:helloworld
let g:helloworl = "sss"
前面的例子中,是定义一个字符串,VIM 脚本中支持以下几种数据类型:
类型 | ID | 描述 |
---|---|---|
Number | 0 | 整数 |
String | 1 | 字符串 |
Funcref | 2 | 函数指针 |
List | 3 | 列表 |
Dictionary | 4 | 字典 |
Float | 5 | 浮点数 |
Boolean | 6 | |
None | 7 | |
Job | 8 | |
Channel | 9 |
作用域
VIM 变量存在三种作用域,全局变量、局部变量、和脚本变量。通常,我们以不同的前缀来区别作用域,比如使用 g:
表示全局变量,s:
表示脚本变量。 在一些特殊情况下,前缀是可以省略的,VIM 会为该变量选择默认的作用域。不同的情况下,默认的作用域是不一样的,在函数内部,默认作用域是局部变量, 而在函数外部,默认作用域是全局变量:
let g:helloworld = 1 " 这是一个全局变量, g: 前缀未省略
let helloworld = 1 " 这也是一个全局变量,在函数外部,默认的作用域是全局的
function! HelloWorld()
let g:helloworld = 1 " 这是函数内部全局变量
let helloworld = 1 " 这是一个函数内部的局部变量,在函数内部,默认的作用域为局部变量
endfunction
前缀 | 描述 |
---|---|
g: |
全局变量 |
l: |
局部变量,只可在函数内部使用 |
s: |
脚本变量,只可以在当前脚本函数内使用 |
v: |
VIM 特殊变量 |
b: |
作用域限定在某一个缓冲区内 |
w: |
作用域限定在窗口内部 |
t: |
作用域限定在标签内部 |
此外,在开发 VIM 插件之前,你还需要了解 vimrc 和 VIM 插件的区别。