现在是时候来看看在vimsrcipt里可以使用的数据类型。现在我们先看看Vim的数值类型。
Vimscript有两种数值类型:整数和浮点数。整数是一个32字节的有符号整数。浮点数很显然是一个定点浮点数。
你可以用几种不同的方式来表示数值。运行下面的命令:
:echom 100
很显然,Vim会输出“100”,现在运行下面的命令:
:echom 0xff
这次Vim会输出“255”.你可以用在一个数值之前加上0x或者0X来表示十六进制数。运行下面的命令:
:echom 010
你也可以用0作为前缀来表示一个八进制数。但是对于这个用法要小心点,因为这种方式比较容易犯错。运行下面的命令:
:echom 017
:echom 019
对于第一个命令Vim会输出“15”,因为“17”在八进制里的值是“15”.对于第二条命令,Vim把它当作十进制数来处理,即使它是以0开始的,但是它不是一个有效的八进制数。
因为vim在这种情况下会默认取错的值,所以我比较推荐的方式是在vim里尽量不要用八进制数。
浮点数也可以用多种格式来表示。运行下面的命令:
:echo 100.1
注意我们在这里用的是echo而不是常用的echom。后面我们会解释为什么要这样做的。Vim会输出“100.1”,毫无意外。你也可以用指数表达式来表示浮点数。运行下面的命令:
:echo 5.45e+3
这次会输出“5450.0”。你也可以用复数作为指数,运行下面的命令:
:echo 15.45e-2
这次vim会输出“0.1545”。
指数签名的+和-是可选的,如果指数前面没有符号的话,那么它的值默认就是正数。运行下面的命令:
:echo 15.3e9
Vim会输出“1.53e10”,这个和之前的值是等效的。不过e前面的数字里的“.”是不能省略的,即使它是一个整数,运行下面的命令,vim会报错的:
:echo 5e10
当你在一个算术表达式,比较表达式,或者其他表达式里同时用到整数和浮点数时,Vim会把整数转换成浮点数,最终返回一个浮点数的结果。运行下面的命令:
:echo 2 * 2.0
Vim会输出“4.0”。
当两个整数相除时,余数会被丢弃掉。运行下面的命令:
:echo 3/2
Vim会输出“1”。如果你想要vim进行浮点数除法,那么就需要其中一个数是浮点型的,这样的话,vim会把另外一个强制转换成浮点型。运行下面的命令:
:echo 3 / 2.0
vim会输出“1.5”,这里3会被强制转换成一个浮点数,然后就会进行浮点数除法运行。