如何将 NERDTree 添加到.vimrc

如何将 NerdTree 添加到我的.vimrc?

78309 次浏览

你使用的是 Windows 系统还是 unix-y 系统?

如果你使用 unix-y 系统,你可以把插件放在 ~/.vim/plugin中:

$ ls ~/.vim/plugin
NERD_tree.vim  scratch.vim  scratchfind.vim

之后,它立即开始工作。试着像这样运行 vim:

$ vim .

它应该能打开 NERD 树形视图中的工作目录。

如果你在 Windows 上,你把插件放在这里: C:\Program Files\Vim\vim70\plugin


要使 NERDTree 在启动 vim 时自动加载,请从命令行以下方式运行它:

$ vim -c "NERDTree" some_file.txt

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

alias vimt='vim -c "NERDTree" $1'

现在,无论何时运行 vimt(而不是 vim) ,都会在窗口的左侧打开 NERDTree。

你也可以这样在你的 .vimrc中添加一个启动 NERDTree 的快捷键:

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


nmap <ESC>t :OpenNERDTree<CR>

现在,当你按下 Esc然后 t它将弹出打开 NERDTree。

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

autocmd VimEnter * NERDTree

但是,如果您对光标总是从 NERDTree 窗口开始这一事实感到恼火,您可以添加第二个自动命令,将光标移动到主窗口:

autocmd VimEnter * NERDTree
autocmd VimEnter * wincmd p

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

如果调用 vim --noplugin或使用使用 --noplugin模式(如 Vimpager)的脚本,将导致以下错误:

Error detected while processing VimEnter Auto commands for "*":
E492: Not an editor command: NERDTree

为了避免这种情况,将命令放在 ~/.vim/after/plugin/NERD_tree.vim中:

autocmd VimEnter * NERDTree

测试 NERDtree是否也可用也是一个好主意,比如:

if exists("loaded_nerd_tree")
autocmd VimEnter * NERDTree
endif

我希望只有在没有文件参数的情况下启动 vim 时才能看到 NERDTree,所以我把它添加到了我的.vimrc:

autocmd VimEnter * if !argc() | NERDTree | endif
" NERD Tree
nmap <silent> <special> <F2> :NERDTreeToggle<RETURN>

根据 NERDTree 说明,你可以只使用 病原体 Vim:

mkdir -p ~/.vim/autoload ~/.vim/bundle; \
curl -Sso ~/.vim/autoload/pathogen.vim \
https://raw.github.com/tpope/vim-pathogen/master/autoload/pathogen.vim

把这个添加到你的.vimrc:

execute pathogen#infect()

然后安装 NERDTree:

cd ~/.vim/bundle
git clone https://github.com/scrooloose/nerdtree.git

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

autocmd vimenter * NERDTree

我喜欢在启动时打开 NERDTree,但有两个要求:

  • 只有在没有参数(文件参数)时才打开 NERDTree
  • 只显示 NERDTree 窗口(我不想显示主窗口)

我使用以下命令:

autocmd VimEnter * if !argc() | NERDTree | wincmd p | q | endif

更新(2022年1月9日)

我已经找到了一种更高性能的方法来满足上面指定的两个需求。

从. vimrc 文件中删除 autocmd (我在上面已经提到过) ,而是创建一个别名,如下所示:

vim() {
if [ $# -eq 0 ]; then
/usr/bin/vim ./
else
/usr/bin/vim "$@"
fi
}