我想要两个插件TagbarToggle& WMToggle不会同时发生

时间:2013-04-09 09:16:38

标签: vim

同时,接下来是我的vimrc配置

map <silent> <F12> :TagbarToggle<cr> :WMToggle<cr> :wincmd h<CR>  

当TagbarToggle可见时,隐藏的TagbarToggle和WMToggle将变为可见。 反之亦然。

当所有看不见时,都会使所有人都可见。 当我点击时,我只想要一个applears

我该怎么办?

以下是我的思路,但我不知道如何完成它

map <F12> :call ShowSlidebar()<cr>
func! ShowSlidebar()
        if TagbarToggle is visible
                exec "TagbarToggle"
                exec "WMToggle"
                return
        else
                exec "TlistToggle"
                return
                endif
endfunc

2 个答案:

答案 0 :(得分:0)

某些插件提供了一个函数来查询它当前是否处于活动状态,某些插件具有全局变量。您需要深入研究插件的代码才能找到答案。

如果插件窗口具有固定名称,您还可以使用以下方法检查可见性:

function! IsTagBarEnabled()
    return (bufwinnr('__Tagbar__') != -1)
endfunction

答案 1 :(得分:0)

现在好了,如下:

470 function !IsBufEnabled()            
471     return (bufwinnr('[Buf List]') != -1)    
472 endfunction
473 
474 map <F12> :call ShowSlidebar()<cr>                                                                                                                                   
475 function! ShowSlidebar()            
476     if IsTagBarEnabled()            
477         exec "TagbarToggle"         
478         exec "WMToggle"             
479     elseif IsBufEnabled()           
480         exec "WMToggle"
481         exec "TagbarToggle"
482     else
483         exec "TagbarToggle"
484     endif
485 endfunction