在"EVERY"选项卡中自动打开NERDTree

tec*_*pil 36 vim nerdtree

是否可以通过按tT在NERDTree中打开每个选项卡中的NERDTree,如果是,如何?

小智 104

autocmd VimEnter * NERDTree
autocmd BufEnter * NERDTreeMirror
Run Code Online (Sandbox Code Playgroud)

编辑:上面的命令似乎打开了NERDTree缓冲区中的新选项卡.而是使用wejrowski在下面的评论中提到的:

autocmd BufWinEnter * NERDTreeMirror
Run Code Online (Sandbox Code Playgroud)

  • 您将这些添加到〜/ .vimrc中 (7认同)
  • 我做了这个,当我通过一个新的选项卡"t"中的nerdtree打开一个文件时,它会在侧面nerdtree面板的新选项卡中打开该文件,并使主区域变为空白.所以没有nerdtree了. (5认同)
  • 嗯,我通过将"autocmd BufEnter*NERDTreeMirror"与"autocmd BufWinEnter*NERDTreeMirror"交换来修复它...似乎它正在打开nerdTree然后使用该nerdtree窗口打开缓冲区 (4认同)
  • 这是错误的答案。使用 nerdtreetabs。nerdtree 没有它就是垃圾 (2认同)

Jiř*_*ský 62

我写了一个vim插件来做到这一点,并在顶部添加一些好东西(即保持所有树同步,确保有意义的标签标题 - 不是像'NERD_tree_1'等标题).

它在Github上:https://github.com/jistr/vim-nerdtree-tabs


dro*_*ope 40

autocmd VimEnter * NERDTree
autocmd BufEnter * NERDTreeMirror

autocmd VimEnter * wincmd w
Run Code Online (Sandbox Code Playgroud)

这个比Dustin的好一点,因为它将光标直接放在您要编辑的文件上以便快速编辑.感谢dustin原始示例^^


Ryt*_*mis 6

这可能不是最好的方法,但是如果你编辑插件/ NERDTree.vim并改变它:

 exec "nnoremap <silent> <buffer> ". g:NERDTreeMapOpenInTab ." :call <SID>openInNewTab(0)<cr>"
Run Code Online (Sandbox Code Playgroud)

对此:

 exec "nnoremap <silent> <buffer> ". g:NERDTreeMapOpenInTab ." :call <SID>openInNewTab(0)<cr>:NERDTree<cr>"
Run Code Online (Sandbox Code Playgroud)

它将改变NERDTree视图中't'的绑定,首先打开文件,然后打开NERDTree.请注意,NERDTree视图不会保持同步.


shi*_*hin 6

怎么切换呢。

" in .vimrc
" NERDTree, Use F3 for toggle NERDTree
nmap <silent> <F3> :NERDTreeToggle<CR>
Run Code Online (Sandbox Code Playgroud)

在 OSX 中,你只需要 fn-F3 来切换 NERDTree。


shi*_*shi 6

更好的解决方案是仅在没有设置命令行参数的情况下打开NERDTree.

" Open NERDTree in new tabs and windows if no command line args set autocmd VimEnter * if !argc() | NERDTree | endif autocmd BufEnter * if !argc() | NERDTreeMirror | endif

如果你做一个git commit类似的东西,NERDTree就没有用了.