我在Debian上使用VIM 7.1。我有9个插件,我通过pathogen.vim加载。加载大约需要8秒,这非常慢,因为这是非GUI / xterm模式。我运行了vim -V,它显示正在多个目录中搜索每个模块。
最初,ftoff.vim,debian.vim和其他“系统”相关的.vim文件在〜/ .vim /中搜索,然后在/ usr / share / vim / vim71 /中搜索 - 我通过移动我的方法来解决这个问题。 vimrc到.vim / vimrc和:导出VIM = / root / .vim,在.vimrc中我做了一个set runtimepath = / usr / share / vim / vim71
但是现在,当模块加载时,它们会改变这个运行时路径,当病原体加载时,它会变得更糟。有没有办法为dirPath指定module-name的哈希值,以避免这种容易出错的查找?或者在vimrc中基于每个模块手动指定runtimepath的方法?
这是病原体加载我的模块后我的运行路径的一个例子。显然,任何进一步的模块加载都会在找到正确的路径之前搜索所有这些路径名。
runtimepath =〜/的.vim〜/的.vim /束/ Align294〜/的.vim /束/ minibufexpl.vim _-_ Elegant_buffer_explorer〜/的.vim /蒲式耳 ndle / The_NERD_Commenter〜/的.vim /束/ The_NERD_tree〜/的.vim /束/病原体,〜/的.vim /束/ VIM-插件-MW-utils的, /.vim/bundle/tlib,~/.vim/bundle/snipMate,~/.vim/bundle/SuperTab,~/.vim/bundle/surround,~/.vim/bundle/taglist 〜/的.vim /束/ Align294〜/的.vim /束/ minibufexpl.vim _-_ Elegant_buffer_explorer〜/的.vim /束/病原体,〜/ vim的 捆绑/ snipMate〜/的.vim /束/ SUPERTAB〜/的.vim /捆扎/环绕,〜/的.vim /束/标记表,〜/的.vim /束/ The_NERD_C mmenter〜/的.vim /束/ The_NERD_tree〜/的.vim /束/ tlib〜/的.vim /束/ VIM-插件管理器,〜/的.vim /束/ VIM-添加 正经理知的储存库,〜/的.vim /束/ VIM-插件-MW-utils的,在/ var / lib中/ VIM /插件,在/ usr /共享/ VIM / vimfiles,/ U R /共享/ VIM / vim71,在/ usr /共享/ VIM / vimfiles /后,在/ var / lib中/ VIM /插件/后,〜/的.vim /束/ snipMate /后,〜/ .vi的 /after,~/.vim/bundle/snipMate/after
答案 0 :(得分:2)
我使用vim-addon-manager并且在rtp
中有33个路径,但是启动并且紧接着关闭vim需要大约0.7-0.8秒(使用vim -c 'qa!'
),所以问题是其中一个插件或您的系统。要检查加载每个插件所需的时间,请尝试以下脚本:
vim --cmd 'profile start profile.log' \
--cmd 'profile func *' \
--cmd 'profile file *' \
-c 'profdel func *' \
-c 'profdel file *' \
-c 'qa!'
您将获得profile.log中的所有时间。具有功能计时的表将是 出现在文件末尾,要获得每个脚本的时间,请使用以下内容 脚本:
" Open profile.log file in vim first
let timings=[]
g/^SCRIPT/call add(timings, [getline('.')[len('SCRIPT '):], matchstr(getline(line('.')+1), '^Sourced \zs\d\+')]+map(getline(line('.')+2, line('.')+3), 'matchstr(v:val, ''\d\+\.\d\+$'')'))
enew
call setline('.', ['count total (s) self (s) script']+map(copy(timings), 'printf("%5u %9s %8s %s", v:val[1], v:val[2], v:val[3], v:val[0])'))
这将打开一个新文件,其中包含与结尾相同的表 profile.log,但1)用于脚本,不用于函数,2)未排序。
如果您的系统有问题,可以尝试以下方法:
:h scriptmanager2#MergePluginFiles()
(必须激活vim-addon-manager)尝试在〜/ .vim中创建所有插件的硬链接:
cd ~/.vim/bundle;for d in *;do cd "$d";for f in **/*.vim;do t="$HOME/.vim/$(dirname "$f")";test -d "$t"||mkdir -p "$t";ln "$f" "$t";done;cd ..;done
答案 1 :(得分:2)
它可能没有关系,但对我来说,变量DISPLAY在启动vim所需的时间上有很大的不同(即使我没有gui编译vim)。 试试
DISPLAY= vim
和
DISPLAY=:0 vim
看看你是否注意到了差异。
答案 2 :(得分:0)
1297651453.71068:搜索“/root/.vim/bundle/pathogen/autoload/scriptmanager.vim"[J 1297651453.71456:搜索“/root/.vim/bundle/snipMate/autoload/scriptmanager.vim"[J 1297651453.71846:搜索“/root/.vim/bundle/SuperTab/autoload/scriptmanager.vim"[J 1297651453.78737:搜索“/root/.vim/bundle/surround/autoload/scriptmanager.vim"[J 1297651453.79179:搜索“/root/.vim/bundle/taglist/autoload/scriptmanager.vim"[J 1297651453.79684:搜索“/root/.vim/bundle/The_NERD_Commenter/autoload/scriptmanager.vim"[J 1297651453.80756:搜索“/root/.vim/bundle/The_NERD_tree/autoload/scriptmanager.vim"[J 1297651453.83:搜索“/root/.vim/bundle/tlib/autoload/scriptmanager.vim"[J 1297651453.86193:搜索“/root/.vim/bundle/vim-addon-manager/autoload/scriptmanager.vim"[J 1297651453.8662:第3行:采购“/root/.vim/bundle/vim-addon-manager/autoload/scriptmanager.vim"[J 1297651453.88259:完成采购/root/.vim/bundle/vim-addon-manager/autoload/scriptmanager.vim [J