Dou*_*yle 198

好的,以前的版本有点简洁,但你要找的答案是将下面的行添加到你的~/.vimrc文件中.它告诉vim你想要在vim启动时设置一个命令来运行,但由于它依赖于要加载的各种插件,所以在完成所有初始化之前你不想运行它.下面这一行就是这样.

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

但是,如果您对光标始终在NERDTree窗口中启动这一事实感到恼火,您可以添加第二个自动命令,将光标移动到主窗口中,如下所示:

autocmd VimEnter * NERDTree
autocmd VimEnter * wincmd p
Run Code Online (Sandbox Code Playgroud)

  • 您不需要两个单独的autocmd:`autocmd VimEnter*NERDTree | wincmd p` (9认同)
  • 我更喜欢执行以下操作:`autocmd VimEnter * NERDTree` 然后是`autocmd VimEnter * if argc() | wincmd p | 结束`。这样,如果我没有打开特定文件,光标就会在 NERDTree 上,但是如果我确实选择了一个文件,它会在主窗口中启动。 (3认同)

gsf*_*gsf 20

我只想在没有文件参数的情况下启动vim时看到NERDTree,所以我将它添加到我的.vimrc中:

autocmd VimEnter * if !argc() | NERDTree | endif
Run Code Online (Sandbox Code Playgroud)


Ste*_*lla 19

您是在Windows还是unix-y系统上?

如果您使用的是unix-y系统,则可以插入插件~/.vim/plugin.这是我的插件目录的样子:

$ ls ~/.vim/plugin
NERD_tree.vim  scratch.vim  scratchfind.vim
Run Code Online (Sandbox Code Playgroud)

之后它立即开始工作.尝试像这样运行vim:

$ vim .
Run Code Online (Sandbox Code Playgroud)

它应该在NERD树视图中打开当前目录.

如果您在Windows上,则将插件放在此处: C:\Program Files\Vim\vim70\plugin


要在启动vim时自动加载NERDTree,请从命令行运行它:

$ vim -c "NERDTree" some_file.txt
Run Code Online (Sandbox Code Playgroud)

您可以在以下位置为此设置别名.bashrc:

alias vimt='vim -c "NERDTree" $1'
Run Code Online (Sandbox Code Playgroud)

现在,无论何时运行vimt(而不是vim),您还将在窗口左侧打开NERDTree.

您还可以添加快捷键以.vimrc这种方式启动NERDTree :

function OpenNERDTree()
  execute ":NERDTree"
endfunction
command -nargs=0 OpenNERDTree :call OpenNERDTree()

nmap <ESC>t :OpenNERDTree<CR>
Run Code Online (Sandbox Code Playgroud)

现在当你点击它Esc然后t会弹出NERDTree.

  • 我想我会补充一点:NERDTreeToggle内置映射,你可以映射到哪个使你的自定义函数相当多余. (2认同)

Ten*_*ack 8

根据https://github.com/scrooloose/nerdtree上的说明,您可以使用pathogen.vim(https://github.com/tpope/vim-pathogen).安装病原体:

mkdir -p ~/.vim/autoload ~/.vim/bundle; \
curl -Sso ~/.vim/autoload/pathogen.vim \
        https://raw.github.com/tpope/vim-pathogen/master/autoload/pathogen.vim
Run Code Online (Sandbox Code Playgroud)

将其添加到您的vimrc:

execute pathogen#infect()
Run Code Online (Sandbox Code Playgroud)

然后安装NERDTree:

cd ~/.vim/bundle
git clone https://github.com/scrooloose/nerdtree.git
Run Code Online (Sandbox Code Playgroud)

如果您想在vim启动时自动打开NERDTree,请将以下内容添加到您的vimrc:

autocmd vimenter * NERDTree
Run Code Online (Sandbox Code Playgroud)


Mik*_*kel 7

这里的答案有一个小问题.

如果您调用vim --noplugin或使用使用vimpager--noplugin等模式的脚本,则会导致此错误:

Error detected while processing VimEnter Auto commands for "*":
E492: Not an editor command: NERDTree
Run Code Online (Sandbox Code Playgroud)

要避免这种情况,请将命令~/.vim/after/plugin/NERD_tree.vim改为:

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

测试也可能是一个好主意NERDtree,即:

if exists("loaded_nerd_tree")
    autocmd VimEnter * NERDTree
endif
Run Code Online (Sandbox Code Playgroud)


Ser*_*ujo 7

" NERD Tree
nmap <silent> <special> <F2> :NERDTreeToggle<RETURN>
Run Code Online (Sandbox Code Playgroud)