本文内容为学习 「笨方法学 Vimscript」 过程中,觉得 Vimscript 语法中与所掌握的其它语言的定义有明显区别,需要特别记忆的内容。
使用
==
进行字符串比较是否忽略大小写与用户的设置相关。比如
"foo" == "FOO"
在
&ignorecase
为 1 时,结果为 True;在
&ignorecase
为 0 时,结果为 False。最佳实践:总是使用
==?
与==#
来指定忽略还是不忽略大小写。当字符串转换为整形时,以数字开头的字符串会转换为整数,非数字开头的将转换为 0。
比如
10.10
将被转换成 10。没有作用域限制的函数名必须以大写字母开头。
传给函数的参数需要带作用域前缀才能使用。
function FunA(name) echom 'Your name is ' . a:name endfunction
+
不能用来连接字符串,它们将被转换为整形然后相加。比如
"1flower" + "1world"
的结果为 2。所以有连接字符串需求使用连接符
.
吧!另外注意10.1 . "hello"
会报错
using Float as a String
,有这种需求的话建议写成"" . 10.1 . "hello"
列表和字符串的切片操作代表的下标区间是
[m, n]
,而不是像 Python 那样是[m, n)
。比如
['a', 'b', 'c', 'd'][0:2]
在 Python 里结果将为
['a', 'b']
;而在 Vimscript 里结果将为
['a', 'b', 'c']
。如果一个 Vimscript 变量要引用一个函数,即它的类型为 Funcref,它就要以大写字母开头;引用函数的列表的命名不受此限制。
"let myFunc = function("len") let MyFunc = function("len")
如果像注释掉的那行那么写会报错
E704: Funcref variable name must start with a capital: myFunc
文档信息
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
- 本文链接:Vimscript 中的坑
- 本文作者:Zhuang Ma