我正在使用exists()
来检查Vim中是否安装了插件(我将;
映射到:
):
if exists(":NERDTree")
map <F4> ;NERDTreeToggle<CR>
endif
除非我手动获取.vimrc文件,否则映射不起作用。我正在使用Pathogen在启动时加载我的插件,我想这与它有关?
我的完整.vimrc文件:https://github.com/ElbertF/dotfiles/blob/master/.vimrc
答案 0 :(得分:23)
您对exists()
的调用不起作用,因为 vim处理完.vimrc
后,仅加载 - 请参阅:help startup
。此外,病原体实际上并未加载您的插件,它只是将其包含的文件夹添加到runtimepath
选项中,以便在.vimrc
之后加载它们。
你可以创建一个VimEnter autocmd来在vim加载完成后设置你的映射:
autocmd VimEnter * if exists(":NERDTree") | exe "map <F4> ;NERDTreeToggle\<CR>" | endif
答案 1 :(得分:1)
在 MacVim 中,您可以在.gvimrc
文件中定义一些映射,该文件在.vimrc
之后解析。重新定义GUI菜单命令非常有用,例如文件→打开... 或文件→保存。
以下是.gvimrc
文件的示例,该文件重新定义 Command + o 热键以打开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> ...
命令绑定 Command + o 以在正常/插入/可视模式下显示NERDTree。