关于vim:在“每个”选项卡中自动打开NERDTree

Auto-open NERDTree in “EVERY” tab

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


1
2
autocmd VimEnter * NERDTree
autocmd BufEnter * NERDTreeMirror

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

1
autocmd BufWinEnter * NERDTreeMirror


我写了一个vim插件来做到这一点,并在顶部添加了一些功能(即使所有树保持同步,确保有意义的标签标题-而不是诸如'NERD_tree_1'之类的标题)。

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


1
2
3
4
autocmd VimEnter * NERDTree
autocmd BufEnter * NERDTreeMirror

autocmd VimEnter * wincmd w

这个比Dustin的要好一点,因为它将光标直接放在要编辑的文件上以便快速编辑。感谢达斯汀(Dustin)提供的原始示例^^


更好的解决方案是仅在未设置命令行参数的情况下打开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

NERDTree是如果您执行git commit或类似方法,则无济于事。


这可能不是最好的方法,但是如果您编辑plugin / NERDTree.vim并进行以下更改:

1
 exec"nnoremap <silent> <buffer>". g:NERDTreeMapOpenInTab ." :call <SID>openInNewTab(0)<cr>"

对此:

1
 exec"nnoremap <silent> <buffer>". g:NERDTreeMapOpenInTab ." :call <SID>openInNewTab(0)<cr>:NERDTree<cr>"

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


如何切换它。

1
2
3
" in .vimrc
" NERDTree, Use F3 for toggle NERDTree

nmap <silent> <F3> :NERDTreeToggle<CR>

在OSX中,只需按fn-F3即可切换NERDTree。


官方存储库的自述文件中实际上提到了此问题,其中包括与自动打开NERDTree有关的三种情况:

How can I open a NERDTree automatically when vim starts up?

将此粘贴到您的vimrc中:autocmd vimenter * NERDTree

How can I open a NERDTree automatically when vim starts up if no files were specified?

将此粘贴到您的vimrc中:

1
2
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif

注意:现在用普通的vim而不是vim .来启动vim。

How can I open NERDTree automatically when vim starts up on opening a directory?

1
2
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") | exe 'NERDTree' argv()[0] | wincmd p | ene | endif

该窗口是特定于选项卡的,这意味着选项卡中的所有窗口都将使用它。此技巧还可以防止NERDTree在首次选择文件时隐藏。