首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用NERDTree和<leader>\打开或关闭<leader>\和Tagbar?

如何使用NERDTree和<leader>\打开或关闭<leader>\和Tagbar?
EN

Stack Overflow用户
提问于 2011-07-08 11:53:50
回答 2查看 4.7K关注 0票数 6

我希望<leader>\在以下条件下打开或关闭NERDTree和Tagbar:

  1. 只关闭两个条件: NERDTree和Tagbar都打开,
  2. 打开,如果NERDTree和Tagbar关闭,或者如果已经打开

到目前为止,在VIMRC,我有:

代码语言:javascript
复制
nmap <leader>\ :NERDTreeToggle<CR> :TagbarToggle<CR>

这不太有效,因为如果一个打开,另一个关闭。它会打开关闭的那个,关闭打开的那个。

如何才能做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-08 13:19:11

您需要使用一个函数来检查插件窗口是否打开,然后采取相应的行动。这应该是可行的,并且还将跳回您在其中启动的窗口:

代码语言:javascript
复制
function! ToggleNERDTreeAndTagbar()
    let w:jumpbacktohere = 1

    " Detect which plugins are open
    if exists('t:NERDTreeBufName')
        let nerdtree_open = bufwinnr(t:NERDTreeBufName) != -1
    else
        let nerdtree_open = 0
    endif
    let tagbar_open = bufwinnr('__Tagbar__') != -1

    " Perform the appropriate action
    if nerdtree_open && tagbar_open
        NERDTreeClose
        TagbarClose
    elseif nerdtree_open
        TagbarOpen
    elseif tagbar_open
        NERDTree
    else
        NERDTree
        TagbarOpen
    endif

    " Jump back to the original window
    for window in range(1, winnr('$'))
        execute window . 'wincmd w'
        if exists('w:jumpbacktohere')
            unlet w:jumpbacktohere
            break
        endif
    endfor
endfunction
nnoremap <leader>\ :call ToggleNERDTreeAndTagbar()<CR>
票数 15
EN

Stack Overflow用户

发布于 2014-04-23 12:45:33

嗯..。这个在vimrc对我有用。

切换选项检查窗口是否已经存在,因此不需要自定义函数(@JanLarres或贡献者之一)必须将其添加到TagBar :D中。

代码语言:javascript
复制
" NERDTree
map <leader>n :NERDTreeToggle<CR>

" TagBar
map <leader>t :TagbarToggle<CR>
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6624043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档