切换 NERDTree 并在切换时打开到当前文件的一种映射

Jos*_*ken 7 vim nerdtree

我试图找到一种方法来拥有可以切换 NERDTree 的正常模式映射,但是在切换时,告诉 NERDTree 查找当前文件。

我知道NERDTreeToggleand NERDTreeFind,我想要做的基本上是这两个命令的组合。

这是我的用例:

  1. 当 NERDTree 未打开时,我可以点击<C-\>NERDTree 将打开当前文件。
  2. 然后我可以再次点击<C-\>,NERDTree 将关闭。

Lew*_*s R 8

第一个答案对我不起作用,所以我想出了这个:

function MyNerdToggle()
    if &filetype == 'nerdtree'
        :NERDTreeToggle
    else
        :NERDTreeFind
    endif
endfunction

nnoremap <C-\> :call MyNerdToggle()<CR>
Run Code Online (Sandbox Code Playgroud)


AdU*_*Uki 6

这将完全符合您的要求:

nnoremap <silent> <expr> <C-\> g:NERDTree.IsOpen() ? "\:NERDTreeClose<CR>" : bufexists(expand('%')) ? "\:NERDTreeFind<CR>" : "\:NERDTree<CR>"
Run Code Online (Sandbox Code Playgroud)


ryu*_*iro 1

这是:NERDTreeToggle您实际需要的命令,只需添加%

nnoremap <C-\> :NERDTreeToggle %<CR>
Run Code Online (Sandbox Code Playgroud)

在提供给 NERD 树的帮助中,您可以发现该:NERDTree命令取决于给定的参数,并且如果:NERDTreeToggle该选项卡不存在 NERD 树,则该命令的作用与该命令相同:NERDTree