VimScript脚本语言学习------常用的内置函数---(变量相关)

 由于VimScript动态数据类型特性和各种不同的作用域,为方便程序员操纵变量,vim平台内置了一组操作变量的函数。

(1)type({expr})

返回给定变量名的数据类型。其中的参数可以是变量名,也可以是字面量常数值。返回值是一个Number类型的数字,含义如下:

0 : Number

1: String

2: Funcref

3: List

4: Dictionary

5: Float

给出一个例子:

let a = 1
let b = 'hello'
let c = "hello"
let d = [1,2,3]
let e = {'name':'smstong', 'age': 12}
function! MyFunc(x)
    echo s:x
endfunction

let F = function('MyFunc')
let g = 1.0
echo type(a)
echo type(b)
echo type(c)
echo type(d)
echo type(e)
echo type(F)
echo type(g)

echo type(233)
echo type('vimscript')
echo type([])
echo type({})

输出结果:

0
1
1
3
4
2
5
0
1
3
4

(2) function({name})

返回一个指向名为name的函数的引用类型变量。函数的名字可以是内置函数,也可以是用户自定义函数。别忘了用户自定义函数和函数引用类型变量的名字首字母必须大写。

(3)islocked({expr})

功能:查看指定变量是处于锁定状态

参数 : 变量的名字字符串或者List或Dictionary元素的名字

返回值: 整数,如果变量是锁定的,则返回一个非零整数,否则返回0

(4)getbufvar({expr}, {varname})

功能:读取指定buffer内有效的指定变量的值

参数:expr 指定缓冲区名字,varname指定变量的名字

返回值:变量的值

 变量可以是用户自定义的,也可以是vim的选项option,如&number。如果变量不存在,则返回空,但不报错。

(5)setbufvar({expr}, {varname}, {val})

功能 :为变量赋值

参数:expr 缓冲区的名子,varname变量名字,val变量的值

注意:如果变量不存在,则新建这个变量

例子:

let b:a = "hello"
call setbufvar(1, 'c', 2)
echo b:c
echo getbufvar(1,'a')
echo getbufvar(1, 'notexist')
echo getbufvar(1, '&number')
echo getbufvar(1,'')
输出:

2
hello
0
{'current_syntax': 'vim', 'undo_ftplugin': 'setl fo< com< tw< commentstring<| unlet! b:match_ignorecas
e b:match_words b:match_skip', 'c': 2, 'a': 'hello', 'did_ftplugin': 1, 'did_indent': 1}
(6)getwinvar({winnr}, {varname})

功能:读取当前tab页中的指定窗口范围的变量

参数 :winnr窗口号(从0开始),varname变量名

(7)setwinvar({winnr}, {varname}, {value})

功能 :设置当前tab页的指定窗口范围的变量值

(8)gettabvar({tabnr}, {varname})和settabvar({tabnr}, {varname})

读取和设置tab页范围的变量

(9)gettabwinvar({tabnr},{winnr},{varname}) 和settabwinvar({tabnr}, {winnr}, {varname}, {value})

读取和设置指定tab页中的指定window范围的变量。


以上这些都是对不同 作用域范围内的变量进行读写。


(10)garbagecollect([at_exit])

作用 :清理释放循环引用导致的内存泄漏

说明: 这个函数很少需要程序员调用,因为vim会在内存超限的时候自动调用它。VimScript是一门带垃圾回收功能的语言,任何不再使用的对象都会被回收,但是循环引用的对象需要特殊处理。



你可能感兴趣的:(VimScript脚本语言学习------常用的内置函数---(变量相关))