以编程方式获取变量列表

时间:2011-03-26 21:29:45

标签: reflection vim

是否可以使用VimL(aka VimScript)表达式获取已声明变量的列表?我想获得使用-complete=expression为命令呈现的相同值集。目标是扩充该列表以用于用户定义的命令完成功能。

2 个答案:

答案 0 :(得分:6)

您可以使用g:作为包含所有全局变量的字典,所以:

let globals = keys(g:)

会给你所有的名字。这同样适用于其他范围:b:s:w:等。有关完整列表,请参阅:help internal-variables

答案 1 :(得分:3)

您可以使用g:b:t:w:v:词典的键来获得类似的内容,但请注意以下事实:< / p>

  1. 如果您想完成选项,则没有与此词典相同的内容。
  2. 此词典中不包含某些变量,例如count(但不是g:countl:count),b:changedtick以及其他变量。
  3. 某些vim黑客可能会将密钥@@@添加到字典g:,但它不会使表达式g:@@@成为有效的变量名称(但会添加000)。虽然g:["@@@"]将是有效的表达。