0

如果缓冲区未打开(而不是默认的 :NERDTree),是否可以配置 NERDTree 以便 :NERDTreeToggle 的行为类似于 :NERDTreeFind ?

如果做不到这一点,是否可以创建一个映射/小脚本来检查 NERDTree 窗口的可见性,如果打开则关闭它,如果关闭则调用 NERDTreeFind ?我查看了 NERDTree 文档以查找 NERDTree 窗口的可见性是否打开,但找不到。

4

4 回答 4

2

您可以设置let NERDTreeQuitOnOpen=1在选择文件时关闭树,并为查找创建映射:

nmap <leader>p :NERDTreeFind<CR>
于 2013-02-19T18:28:25.817 回答
2

有一个功能,可以帮助您区分NERDTree是否打开。

nerdtree#isTreeOpen()

您可以:echom nerdtree#isTreeOpen()在打开/关闭 Nerdtree 时进行一些测试。

于 2013-02-19T18:20:06.753 回答
2

我现在也在学习使用 Vim,并且有同样的愿望让 NERDTreeToggle 在打开时使用 NERDTreeFind。经过一番挖掘/谷歌搜索后,我尝试在下面编写一个简单的 Vim 脚本,它似乎对我有用!:]

function! ToggleNERDTreeFind()
    if g:NERDTree.IsOpen()
        execute ':NERDTreeClose'
    else
        execute ':NERDTreeFind'
    endif
endfunction

我只是将上述函数绑定到一个快捷键,用于查找/关闭 NERDTree。希望这可以帮助。

nnoremap <leader>f :call ToggleNERDTreeFind()<CR>
于 2015-07-25T20:54:50.913 回答
1

thomaswhyyou 提供的函数的小改进,如果当前缓冲区为空,该函数也可以工作:

function! ToggleNERDTreeFind()
    if g:NERDTree.IsOpen()
        execute ':NERDTreeClose'
    else
      if bufname('%') == ''
          execute ':NERDTree'
      else
          execute ':NERDTreeFind'
      endif
    endif
endfunction
于 2022-02-20T18:03:07.800 回答