Reflection 以编程方式获取变量列表

Reflection 以编程方式获取变量列表,reflection,vim,Reflection,Vim,是否可以使用VimL(也称为VimScript)表达式获取声明变量的列表?我希望使用-complete=expression获得与命令相同的值集。目标是扩充该列表,以便在用户定义的命令完成函数中使用。您可以将g:用作保存所有全局变量的字典,因此: let globals = keys(g:) 我会告诉你所有的名字。这同样适用于其他范围:b:、s:、w:等。有关完整列表,请参见:帮助内部变量。您可以将g:用作保存所有全局变量的字典,因此: let globals = keys(g:) 我会告诉

是否可以使用VimL(也称为VimScript)表达式获取声明变量的列表?我希望使用
-complete=expression
获得与命令相同的值集。目标是扩充该列表,以便在用户定义的命令完成函数中使用。

您可以将
g:
用作保存所有全局变量的字典,因此:

let globals = keys(g:)

我会告诉你所有的名字。这同样适用于其他范围:
b:
s:
w:
等。有关完整列表,请参见
:帮助内部变量。

您可以将
g:
用作保存所有全局变量的字典,因此:

let globals = keys(g:)

我会告诉你所有的名字。这同样适用于其他范围:
b:
s:
w:
等。有关完整列表,请参见
:帮助内部变量。

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

  • 如果要完成选项,则没有与此词典等效的词典
  • 一些变量如
    count
    (但不包括
    g:count
    l:count
    )、
    b:changedtick
    ,其他变量可能不在本词典中
  • 一些vim黑客可能会将key
    @@@
    添加到dictionary
    g:
    ,但它不会使expression
    g:@@@
    成为有效的变量名(但会添加
    000
    )。尽管
    g:[“@@@@]”
    将是一个有效的表达式

  • 您可以使用
    g:
    b:
    t:
    w:
    v:
    字典的键获得类似的内容,但请注意以下事实:

  • 如果要完成选项,则没有与此词典等效的词典
  • 一些变量如
    count
    (但不包括
    g:count
    l:count
    )、
    b:changedtick
    ,其他变量可能不在本词典中
  • 一些vim黑客可能会将key
    @@@
    添加到dictionary
    g:
    ,但它不会使expression
    g:@@@
    成为有效的变量名(但会添加
    000
    )。尽管
    g:[“@@@@]”
    将是一个有效的表达式

  • 我想解析由
    :options
    或类似程序生成的文本可能是获取选项列表的一种方式。@Intuite
    :set all
    更适合这一需要,尽管我不喜欢使用任何重定向:
    :redir
    命令将覆盖现有的重定向(如果有的话)。是的,
    :redir
    有点恶心,但对于某些应用来说似乎是必要的。再次感谢您提供有关
    :全部设置
    的提示。顺便说一句,
    count
    似乎在
    v:
    字典中:
    :help v:count
    提到了
    count
    是一个保留以向后兼容的别名。@Intuite是的,我是指这个别名。例如,如果你想完成,
    co
    ,你将不会显示
    count
    ,除非你写了一个hack,将
    count
    键(g:)
    一起添加到可能的变体列表中,但是如果你想完成
    g:co
    ,你就不会这样做。好的,明白了。尽管我注意到vim的内置补全功能也没有完成
    count
    ,所以可能这并不重要。例如,
    :echo cou
    只给出
    计数(
    。我想解析由
    :options
    或类似的方法生成的文本可能是获取选项列表的一种方式。@intuite
    :set all
    更适合这一需要,尽管我不喜欢使用任何重定向:
    :redir
    命令将覆盖现有的重定向(如果有的话)。是的,
    :redir
    有点恶心,但是似乎对某些应用程序是必需的。再次感谢您提供的关于
    :set all
    的提示。顺便说一句
    count
    似乎在
    v:
    字典中:
    :help v:count
    提到了
    count
    是一个为向后兼容而保留的别名。@intuited Yes,我的意思是这个别名。例如,如果您想完成,
    co
    ,除非您编写一个hack,将
    count
    键一起添加到可能的变体列表中(g:)
    ,但如果您想完成
    g:co
    ,则不会这样做。好的,明白了。虽然我注意到vim的内置完成也没有完成
    count
    ,所以可能没关系。例如
    :echo cou
    只给出
    count(
    )。