【问题标题】:Why does open a whole directory with `vim .` and NERDTree open up the file browser twice?为什么用 `vim .` 打开整个目录,而 NERDTree 会打开文件浏览器两次?
【发布时间】:2020-02-25 17:59:53
【问题描述】:

我已经安装了 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

【问题讨论】:

  • 正如 Jeremy 在他的回答中提到的那样,发生这种情况是因为您在 Vim 启动时使用 autocmd 刷新 NerdTree。如果您仍想保留该 autocmd 部分,只需在没有 . (当前目录)选项。

标签: vim nerdtree


【解决方案1】:

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

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

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

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

虽然我不能让它正常工作。也许其他人可以利用我目前拥有的东西。

【讨论】:

  • 哇,我觉得我从未尝试过 vimvim . 的做法很愚蠢。前者似乎工作正常。我喜欢使用 autocmd 的方法,但我知道的不够多,无法让它发挥作用 - 希望其他人可以按照您的建议提供帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-01
  • 2018-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多