如何编写执行:NERDTree命令的函数?注意:我使用的是neovim,但我假设vimscript语法是相同的
这是我的代码
(Node *&a)
答案 0 :(得分:1)
NERDTree命令是自定义Ex命令,因此,您可以通过:NERDTreeCWD
(交互式)并依次按 Enter 来调用它们。在Vimscript中,您可以删除:
前缀。
也许混淆的一部分(也可以在注释中看到)是由于NERDTree命令由具有相同名称的全局函数实现的:
:verbose command NERDTreeCWD
Name Args Address Complete Definition
| NERDTreeCWD 0 call NERDTreeCWD()
因此,您也可以直接绕过自定义函数和call NERDTreeCWD()
,但这将使您依赖于插件的实现细节,因此不建议使用。
您是否知道插件已经有一个:NERDTreeToggle
命令?
此外,您不需要定义自己的标志变量(g:open
)-只需重用插件中的那个变量即可(通过g:NERDTree.IsOpen()
函数公开)。是的,这使您依赖于插件的详细信息(但这看起来像一个公共API,而不是内部实现,因此它应该更加稳定)-仍然比尝试重新发明轮子要好。 (您的全局标志将在多个标签页上出现问题-每个标签页可能都具有NERDTree活动状态。)