我正在尝试找到一种可以切换NERDTree的正常模式映射的方法,但是当切换时,告诉NERDTree找到当前文件。
我知道NERDTreeToggle
和NERDTreeFind
,而我想要做的事实上就是这两个命令的组合。
这是我的用例:
<C-\>
,NERDTree将打开当前文件。<C-\>
,NERDTree将关闭。答案 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>