- let 初始化或赋值
- unlet 删除变量
- unlet! 删除变量,且会忽略变量不存在的错误提示
与JavaScript类似,变量在函数之外初始化,是全局变量;反之,局部变量。可以在变量名称之前加冒号前缀,明确指明变量的作用域:
g:var 全局
a:var 函数参数
l:var 函数局部变量
b:var buffer局部变量
w:var window局部变量
t:var tab局部变量
s:var 当前脚步内可见的局部变量
v:var Vim预定义的内部变量函数引用必须以大写字符开头。let Myfunc = function("strlen")
let list = [1, 2, [3, 4]]
list[0]let dict = {'blue': "#0000ff", 'foo': {999: "baz"}}`设置了ignorecase会影响==和!=的比较结果,可以在添加?或#来明确指定大小写是否忽略。
<string>.<stript>:字符串连接<string> == <string>: 字符串相等<string> != <string>: 字符串不等<string> =~ <pattern>: 匹配 pattern<string> !~ <pattern>: 不匹配 pattern<operator>#: 匹配大小写<operator>?: 不匹配大小写
function定义函数,function!覆盖函数定义,函数名必须以大写字母开头。函数和变量一样有作用域。
delfunction 删除函数,call function调用函数,call必须,除非在表达式中。
function! g:FunctionName(arg1, arg2)
<function body>
endfunction无原生支持,用字典模拟。dict内部可以使用self访问dict本身。对字典使用deepcopy()方法复制,实现实例化。
let MockClass = {"foo": "Foo"};
function MockClass.printFoo() dict
echo self.foo
endfunction
" 实例化
let instance = deepcopy(MyClass)
call instance.printFoo()