gpt4 book ai didi

vim - 如何使用\打开或关闭NERDTree和标签栏?

转载 作者:行者123 更新时间:2023-12-04 22:24:26 24 4
gpt4 key购买 nike

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

  • 仅当NERDTree和Tagbar都打开时才关闭
  • 如果NERDTree和Tagbar已关闭,或者已经打开,则同时打开

  • 到目前为止,在VIMRC中,我有:
    nmap <leader>\ :NERDTreeToggle<CR> :TagbarToggle<CR>

    哪一个完全不起作用,因为如果一个打开,另一个关闭。它将打开已关闭的一个,并关闭已打开的一个。

    如何做到这一点?

    最佳答案

    您需要使用一个功能来检查插件窗口是否打开,然后采取相应的措施。这应该可以工作,并且还会跳回到您在其中开始的窗口:

    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>

    关于vim - 如何使用<leader>\打开或关闭NERDTree和标签栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6624043/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com