JSRUN 用代码说话

列表

编辑教程

列表

目前为止我们已经很熟悉Vimscript里的变量类型了,但我们压根还没讲到集合(aggregates)呢! Vim有两种主要的集合类型,现在我们将讲到第一种:列表。

Vimscript列表是有序的,异质的元素集合。执行下面的命令:

:echo ['foo', 3, 'bar']

Vim输出这个列表。列表里当然可以嵌套列表。执行下面的命令:

:echo ['foo', [3, 'bar']]

Vim会愉快地输出这个列表。

索引

Vimscript列表的索引从0开始,你可以用下标得到对应元素。执行这个命令:

:echo [0, [1, 2]][1]

Vim显示[1,2]。你也可以从列表结尾进行索引,这很像Python。执行这个命令:

:echo [0, [1, 2]][-2]

Vim显示0。索引-1对应列表的最后一个元素,-2对应倒数第二个,以此类推。

切割

Vim列表也可被切割。这看上去会让Python程序员感到眼熟,但它总是表现得跟Python中的一样! 执行这个命令:

:echo ['a', 'b', 'c', 'd', 'e'][0:2]

Vim显示['a','b','c'](第1,2,3个元素)。越过列表索引上界也是安全的。试试这个命令:

:echo ['a', 'b', 'c', 'd', 'e'][0:100000]

Vim仅仅显示整个列表。

可以用负数切割。试试这个命令:

:echo ['a', 'b', 'c', 'd', 'e'][-2:-1]

Vim显示['d','e'](元素-2和-1)。

你可以忽略第一个索引以表示"开头"和/或最后一个索引以表示"结尾"。执行下面的命令:

:echo ['a', 'b', 'c', 'd', 'e'][:1]
:echo ['a', 'b', 'c', 'd', 'e'][3:]

Vim显示['a','b']和['d','e']。

像Python,Vimscript也允许你索引和切割字符串。执行下面命令:

:echo "abcd"[0:2]

Vim显示abc。可是,你不能使用负数来索引字符串。你却可以使用负数切割字符串! 执行下面的命令:

:echo "abcd"[-1] . "abcd"[-2:]

Vim显示cd(使用负数索引会没有报错地得到一个空字符串)。

连接

你可以用+连接Vim列表。试试这个命令:

:echo ['a', 'b'] + ['c']

Vim,一点也不奇怪地,显示['a','b','c']。 没什么好说的——在奇怪的Vimscript世界里,列表是如此地正常,以至于让人感到奇怪。

列表函数

Vim有着许许多多内置列表函数。执行这个命令:

:let foo = ['a']
:call add(foo, 'b')
:echo foo

Vim就地在列表foo末尾加上'b',并显示['a','b']。

:echo len(foo)

Vim显示2,即是列表的长度。试试下面的命令:

:echo get(foo, 0, 'default')
:echo get(foo, 100, 'default')

Vim显示a和default。get函数会返回给定索引对应的给定列表的项,如果索引超过列表范围, 返回给定的默认值。

执行这个命令:

:echo index(foo, 'b')
:echo index(foo, 'nope')

Vim显示1和-1。index函数返回给定项在给定列表的第一个索引,如果不在列表中则返回-1。

现在执行这个命令:

:echo join(foo)
:echo join(foo, '---')
:echo join([1, 2, 3], '')

Vim显示a b,a---b,和123。join先将给定列表的每一项强制转换成字符串, 再以给定的分割字符串(或一个空格,如果没有给的话)作为分割,连接成一个字符串。

执行下面命令:

:call reverse(foo)
:echo foo
:call reverse(foo)
:echo foo

Vim先显示['b','a'],接着是['a','b']。reverse就地转置给定的列表。

JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。 大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
支付宝
9.99
无法付款,请点击这里
金额: 0
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟