首页 > 解决方案 > 为什么用 `vim .` 打开整个目录,而 NERDTree 会打开文件浏览器两次?

问题描述

我已经安装了 NERDTREE。

如果我打开整个目录,vim .我会看到以下内容:

在此处输入图像描述

如果我打开目录中的特定文件vim file1.txt,我会看到以下内容:

在此处输入图像描述

有没有办法vim .不打开文件浏览器两次?我知道它没有要打开的特定文件,但我宁愿让它只打开左侧窗格,然后在右侧什么都没有,而不必总是手动关闭右侧。

.vimrc如果有帮助,这是我的相关部分

" === Plugins

filetype off
call vundle#begin('$HOME/.vim/bundle')

Plugin 'VundleVim/Vundle.vim' " required
Plugin 'scrooloose/nerdtree', { 'on':  'NERDTreeToggle' }

call vundle#end()
filetype plugin indent on


" === Auto Commands

autocmd VimEnter * NERDTree                                        " Start NERDTree on startup
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree")
  \ && b:NERDTree.isTabTree()) | q | endif                         " Close NERDTree explore after last window closes

" === Config

let NERDTreeMinimalUI  = 1  " NERDTree Minimal UI
let NERDTreeDirArrows  = 1  " NERDTREE Directional Arrows
let NERDTreeShowHidden = 1   " Show hidden files

标签: vimnerdtree

解决方案


Nerdtree 不知道您在主窗格中打开了什么。Vim 不知道 Nerdtree 用它的侧窗格做什么。

如果您只关心要在当前目录中打开 vim 所描述的情况,vim(只是不带参数的命令)将打开欢迎屏幕,并且带有自动命令的 Nerdtree 将在侧窗格中打开,基于当前目录。

如果您担心将 vim 指向 cwd 以外的目录,您可以禁用 Nerdtree 插件自动命令,使其不会自动打开,或者重写自动命令以触发当您告诉 vim 打开的东西是文件时。像这样的东西?

augroup NerdTree
  autocmd!
  autocmd VimEnter * | if isdirectory(expand("<afile>")) | :NERDTreeToggle | endif
augroup END

虽然我不能让它正常工作。也许其他人可以发挥我目前所拥有的一切。


推荐阅读