2011-02-15 39 views
15

我使用exists()检查,如果插件安装在Vim的(我映射;:):如果存在(“:命令”)失败在启动时,利用病原

if exists(":NERDTree") 
    map <F4> ;NERDTreeToggle<CR> 
endif 

关系是否除非手动输入.vimrc文件。我使用Pathogen在启动时加载我的插件,我想这与它有关系?

我的完整.vimrc文件:https://github.com/ElbertF/dotfiles/blob/master/.vimrc

+3

你应该使用`nnoremap :NERDTreeToggle `(无需更改此处冒号+你可能不希望调用NERDTreeToggle在视觉和操作符等待模式),不`地图...`。 – ZyX 2011-02-16 05:25:12

回答

22

您对exists()电话 VIM已处理完不工作,因为插件只加载你的.vimrc - 见:help startup。此外,病原体实际上并没有加载您的插件,只是将其包含的文件夹添加到runtimepath选项中,因此它们将在您的.vimrc之后加载。

您可以创建一个在VimEnter自动命令来设置你的映射的vim加载完成后:

autocmd VimEnter * if exists(":NERDTree") | exe "map <F4> ;NERDTreeToggle\<CR>" | endif 
+2

谢谢!我将整个部分固定在一个函数中,并在VimEnter上调用它。 `autocmd VimEnter *:调用插件()` – 2011-02-15 23:02:32

1

的MacVim您可以定义在.gvimrc文件,其中.vimrc后面解析某些映射。重新定义GUI菜单命令很有用,如文件→打开...文件→保存
这里是例如.gvimrc文件,它重新定义了命令 + Ø热键打开NERDTree的:

if has('gui_running') 
    if exists(':NERDTree') 
     " Command+O shows the NERDTree instead of the open dialog 
     macm File.Open\.\.\. key=<nop> 
     nnoremap <D-o> :NERDTree<CR> 
     inoremap <D-o> <Esc>:NERDTree<CR> 
     vnoremap <D-o> <Esc>:NERDTree<CR> 
    endif 
endif 

macm File.Open\.\.\. key=<nop>命令解除绑定从菜单项文件→打开任何热键。
?noremap <D-o> ...命令绑定命令 + 以正常/插入/可视模式显示NERDTree。