时间:2015-11-01 18:02:05

标签: vim nerdtree

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

我知道NERDTreeToggleNERDTreeFind,而我想要做的事实上就是这两个命令的组合。

这是我的用例:

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

5 个答案:

答案 0 :(得分:1)

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

nnoremap <C-\> :NERDTreeToggle %<CR>

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

答案 1 :(得分:1)

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

import tryit
import ctypes
b = bytearray(100)
tryit.fun_voidp(b) # fail
tryit.fun_voidp(ctypes.c_void_p.from_buffer(b)) # fail
tryit.fun_voidp(ctypes.c_void_p.from_buffer(b).value) # fail

答案 2 :(得分:0)

这将完全满足您的要求:

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

答案 3 :(得分:0)

function! NerdTreeToggleFind()
    if exists("g:NERDTree") && g:NERDTree.IsOpen()
        NERDTreeClose
    elseif filereadable(expand('%'))
        NERDTreeFind
    else
        NERDTree
    endif
endfunction

nnoremap <C-\> :call NerdTreeToggleFind()<CR>

答案 4 :(得分:0)

在Lewis R的答案并意识到它对我不起作用之后,我对其进行了一些调整,并提出了

" map nerdtree to the ctrl+n
function MyNerdToggle()
    if &filetype == 'nerdtree' || exists("g:NERDTree") && g:NERDTree.IsOpen()
        :NERDTreeToggle
    else
        :NERDTreeFind
    endif
endfunction

nnoremap <C-\> :call MyNerdToggle()<CR>