VIM - 检测插件是否处于活动/运行/打开状态?

VIM - 检测插件是否处于活动/运行/打开状态?

我想用 VIM 做一些技巧,所以我请求你们的帮助!

  • 是否可以检测插件是否处于活动/运行/打开状态?
  • 您可以通过名称关闭插件吗?
  • 当插件失去焦点时您可以关闭它吗?

目标是创建在“vimrc”中配置的键盘快捷键(条件),以便我可以轻松地在插件之间切换!

加!

是否有任何插件可以促进所提到的活动?

下面是一个例子:

我举了一个例子来说明我喜欢做的一些事情。在本例中,我在键盘上放置了一个快捷方式(在 vimrc 中),它允许您根据特定插件的状态执行特定操作。例如,如果“Dbg”插件已打开,它会关闭该插件,如果已关闭,则在打开插件之前执行一些操作。

"Note: Open or close "VIM Debug" depending on whether it is opened or closed! By Questor
function! ToggleDbg()
        if exists("g:Dbg")
                Dbg quit
                unlet g:Dbg
        else    
                try     
                        "HYPOTHETICAL EXAMPLE ->
                        if isrunning("FOO_PLUGIN")
                            quit("FOO_PLUGIN")
                            "... or do something else...
                        endif
                        "<- HYPOTHETICAL EXAMPLE
                        Dbg .
                        let g:Dbg = 1
                catch   
                        echo "No Errors found!"
                endtry  
        endif   
endfunction
nmap <script><silent><C-F5> :call ToggleDbg()<CR>

答案1

插件不是“在后台”运行;它的效果是通过定义自定义映射/命令/事件处理程序来实现的。

要检查这些,您可以使用exists()hasmapto()函数。

警告

“做一些小把戏”是一个模糊而危险的动机。一般来说,插件可以很容易地共存;只需选择不同的映射即可。一些插件(如所须) 和包管理器 (醋酸乙烯共聚物)允许“延迟”加载插件(首次使用时),但这只是有助于减少启动时间(无论如何,使用自动加载功能编写良好的插件应该不会有任何问题)。

请提供更多背景信息;你的最终目标是什么?当问题只是涉及一个小的技术步骤时,很难给出好的答案。如果你不告诉我们为什么你想要这个,很容易屈服于XY问题

相关内容