Reflection 以编程方式获取变量列表
是否可以使用VimL(也称为VimScript)表达式获取声明变量的列表?我希望使用Reflection 以编程方式获取变量列表,reflection,vim,Reflection,Vim,是否可以使用VimL(也称为VimScript)表达式获取声明变量的列表?我希望使用-complete=expression获得与命令相同的值集。目标是扩充该列表,以便在用户定义的命令完成函数中使用。您可以将g:用作保存所有全局变量的字典,因此: let globals = keys(g:) 我会告诉你所有的名字。这同样适用于其他范围:b:、s:、w:等。有关完整列表,请参见:帮助内部变量。您可以将g:用作保存所有全局变量的字典,因此: let globals = keys(g:) 我会告诉
-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@@@
添加到dictionaryg:
,但它不会使expressiong:@@@
成为有效的变量名(但会添加000
)。尽管g:[“@@@@]”
将是一个有效的表达式
您可以使用g:
、b:
、t:
、w:
和v:
字典的键获得类似的内容,但请注意以下事实:
如果要完成选项,则没有与此词典等效的词典
一些变量如count
(但不包括g:count
或l:count
)、b:changedtick
,其他变量可能不在本词典中
一些vim黑客可能会将key@@@
添加到dictionaryg:
,但它不会使expressiong:@@@
成为有效的变量名(但会添加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(
)。