W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
目前為止我們已經(jīng)很熟悉Vimscript里的變量類型了,但我們壓根還沒(méi)講到集合(aggregates)呢! Vim有兩種主要的集合類型,現(xiàn)在我們將講到第一種:列表。
Vimscript列表是有序的,異質(zhì)的元素集合。執(zhí)行下面的命令:
:echo ['foo', 3, 'bar']
Vim輸出這個(gè)列表。列表里當(dāng)然可以嵌套列表。執(zhí)行下面的命令:
:echo ['foo', [3, 'bar']]
Vim會(huì)愉快地輸出這個(gè)列表。
Vimscript列表的索引從0開(kāi)始,你可以用下標(biāo)得到對(duì)應(yīng)元素。執(zhí)行這個(gè)命令:
:echo [0, [1, 2]][1]
Vim顯示[1,2]
。你也可以從列表結(jié)尾進(jìn)行索引,這很像Python。執(zhí)行這個(gè)命令:
:echo [0, [1, 2]][-2]
Vim顯示0
。索引-1
對(duì)應(yīng)列表的最后一個(gè)元素,-2
對(duì)應(yīng)倒數(shù)第二個(gè),以此類推。
Vim列表也可被切割。這_看上去_會(huì)讓Python程序員感到眼熟,但它_不_總是表現(xiàn)得跟Python中的一樣! 執(zhí)行這個(gè)命令:
:echo ['a', 'b', 'c', 'd', 'e'][0:2]
Vim顯示['a','b','c']
(第1,2,3個(gè)元素)。越過(guò)列表索引上界也是安全的。試試這個(gè)命令:
:echo ['a', 'b', 'c', 'd', 'e'][0:100000]
Vim僅僅顯示整個(gè)列表。
可以用負(fù)數(shù)切割。試試這個(gè)命令:
:echo ['a', 'b', 'c', 'd', 'e'][-2:-1]
Vim顯示['d','e']
(元素-2和-1)。
你可以忽略第一個(gè)索引以表示"開(kāi)頭"和/或最后一個(gè)索引以表示"結(jié)尾"。執(zhí)行下面的命令:
:echo ['a', 'b', 'c', 'd', 'e'][:1]
:echo ['a', 'b', 'c', 'd', 'e'][3:]
Vim顯示['a','b']
和['d','e']
。
像Python,Vimscript也允許你索引和切割字符串。執(zhí)行下面命令:
:echo "abcd"[0:2]
Vim顯示abc
??墒?,你不能使用負(fù)數(shù)來(lái)索引字符串。你卻_可以_使用負(fù)數(shù)切割字符串! 執(zhí)行下面的命令:
:echo "abcd"[-1] . "abcd"[-2:]
Vim顯示cd
(使用負(fù)數(shù)索引會(huì)沒(méi)有報(bào)錯(cuò)地得到一個(gè)空字符串)。
你可以用+
連接Vim列表。試試這個(gè)命令:
:echo ['a', 'b'] + ['c']
Vim,一點(diǎn)也不奇怪地,顯示['a','b','c']
。 沒(méi)什么好說(shuō)的——在奇怪的Vimscript世界里,列表是如此地正常,以至于讓人感到奇怪。
Vim有著許許多多內(nèi)置列表函數(shù)。執(zhí)行這個(gè)命令:
:let foo = ['a']
:call add(foo, 'b')
:echo foo
Vim就地在列表foo
末尾加上'b'
,并顯示['a','b']
。
:echo len(foo)
Vim顯示2
,即是列表的長(zhǎng)度。試試下面的命令:
:echo get(foo, 0, 'default')
:echo get(foo, 100, 'default')
Vim顯示a
和default
。get
函數(shù)會(huì)返回給定索引對(duì)應(yīng)的給定列表的項(xiàng),如果索引超過(guò)列表范圍, 返回給定的默認(rèn)值。
執(zhí)行這個(gè)命令:
:echo index(foo, 'b')
:echo index(foo, 'nope')
Vim顯示1
和-1
。index
函數(shù)返回給定項(xiàng)在給定列表的第一個(gè)索引,如果不在列表中則返回-1
。
現(xiàn)在執(zhí)行這個(gè)命令:
:echo join(foo)
:echo join(foo, '---')
:echo join([1, 2, 3], '')
Vim顯示a b
,a---b
,和123
。join
先將給定列表的每一項(xiàng)強(qiáng)制轉(zhuǎn)換成字符串, 再以給定的分割字符串(或一個(gè)空格,如果沒(méi)有給的話)作為分割,連接成一個(gè)字符串。
執(zhí)行下面命令:
:call reverse(foo)
:echo foo
:call reverse(foo)
:echo foo
Vim先顯示['b','a']
,接著是['a','b']
。reverse
_就地_轉(zhuǎn)置給定的列表。
閱讀:help List
??赐晁?。注意大寫(xiě)L
。
閱讀:help add()
.
閱讀:help len()
.
閱讀:help get()
.
閱讀:help index()
.
閱讀:help join()
.
閱讀:help reverse()
.
瀏覽:help functions
來(lái)查找我沒(méi)有講過(guò)的其他列表函數(shù)。 執(zhí)行:match Keyword /\clist/
來(lái)以大小寫(xiě)不敏感的方式高亮單詞list
,以便于你的查找。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: