在vimscript函数中如何执行全局命令?

时间:2019-11-15 01:23:15

标签: vim nerdtree neovim

如何编写执行:NERDTree命令的函数?注意:我使用的是neovim,但我假设vimscript语法是相同的

这是我的代码

(Node *&a)

1 个答案:

答案 0 :(得分:1)

NERDTree命令是自定义Ex命令,因此,您可以通过:NERDTreeCWD(交互式)并依次按 Enter 来调用它们。在Vimscript中,您可以删除:前缀。

也许混淆的一部分(也可以在注释中看到)是由于NERDTree命令由具有相同名称的全局函数实现的:

:verbose command NERDTreeCWD
    Name              Args Address Complete    Definition
|   NERDTreeCWD       0                        call NERDTreeCWD()

因此,您也可以直接绕过自定义函数和call NERDTreeCWD(),但这将使您依赖于插件的实现细节,因此不建议使用。

实施NERDTree切换

您是否知道插件已经有一个:NERDTreeToggle命令?

此外,您不需要定义自己的标志变量(g:open)-只需重用插件中的那个变量即可(通过g:NERDTree.IsOpen()函数公开)。是的,这使您依赖于插件的详细信息(但这看起来像一个公共API,而不是内部实现,因此它应该更加稳定)-仍然比尝试重新发明轮子要好。 (您的全局标志将在多个标签页上出现问题-每个标签页可能都具有NERDTree活动状态。)