如何将静态列表添加到列表?

时间:2014-08-23 12:55:19

标签: list vim nested global-variables

将全局变量添加到列表时,vim是否将此变量添加为动态列表?

输入

g:ListTotal = []

let g:mylist = ['hi','2','','']
call add(g:ListTotal, g:mylist)

echo g:ListTotal - > ['hi','2','',''] =>确定

然后在脚本g:mylist中更改p.e.

let g:mylist[0] = 'hello' 

echo g:mylist - > = ['hello','2','',''] =>好的

再次将此列表添加到g:ListTotal:
call add(g:ListTotal, g:mylist)

:echo g:ListTotal - >
输出:

[['hello','2','',''],['hello','2','','']]

预期输出

[['hi','2','',''],['hello','2','','']]

当vim被添加到另一个列表时,是否会动态更新列表? 如何将列表静态添加到另一个列表?

1 个答案:

答案 0 :(得分:1)

我相信列表变量只是指向列表的指针,所以添加到列表只是添加指针,这就是为什么更改看起来更改两者。

如果您想要一个唯一的列表,您可以复制该列表。

call add(g:ListTotal, copy(g:mylist))

或者

call add(g:ListTotal, deepcopy(g:my list))

阅读:h copy():h deepcopy()