如果缓冲区未打开(而不是默认的 :NERDTree),是否可以配置 NERDTree 以便 :NERDTreeToggle 的行为类似于 :NERDTreeFind ?
如果做不到这一点,是否可以创建一个映射/小脚本来检查 NERDTree 窗口的可见性,如果打开则关闭它,如果关闭则调用 NERDTreeFind ?我查看了 NERDTree 文档以查找 NERDTree 窗口的可见性是否打开,但找不到。
如果缓冲区未打开(而不是默认的 :NERDTree),是否可以配置 NERDTree 以便 :NERDTreeToggle 的行为类似于 :NERDTreeFind ?
如果做不到这一点,是否可以创建一个映射/小脚本来检查 NERDTree 窗口的可见性,如果打开则关闭它,如果关闭则调用 NERDTreeFind ?我查看了 NERDTree 文档以查找 NERDTree 窗口的可见性是否打开,但找不到。
您可以设置let NERDTreeQuitOnOpen=1
在选择文件时关闭树,并为查找创建映射:
nmap <leader>p :NERDTreeFind<CR>
有一个功能,可以帮助您区分NERDTree是否打开。
nerdtree#isTreeOpen()
您可以:echom nerdtree#isTreeOpen()
在打开/关闭 Nerdtree 时进行一些测试。
我现在也在学习使用 Vim,并且有同样的愿望让 NERDTreeToggle 在打开时使用 NERDTreeFind。经过一番挖掘/谷歌搜索后,我尝试在下面编写一个简单的 Vim 脚本,它似乎对我有用!:]
function! ToggleNERDTreeFind()
if g:NERDTree.IsOpen()
execute ':NERDTreeClose'
else
execute ':NERDTreeFind'
endif
endfunction
我只是将上述函数绑定到一个快捷键,用于查找/关闭 NERDTree。希望这可以帮助。
nnoremap <leader>f :call ToggleNERDTreeFind()<CR>
thomaswhyyou 提供的函数的小改进,如果当前缓冲区为空,该函数也可以工作:
function! ToggleNERDTreeFind()
if g:NERDTree.IsOpen()
execute ':NERDTreeClose'
else
if bufname('%') == ''
execute ':NERDTree'
else
execute ':NERDTreeFind'
endif
endif
endfunction