VIM: динамический путь выполнения для module.vim и медленный запуск - PullRequest
0 голосов
/ 13 февраля 2011

Я использую VIM 7.1 на Debian. У меня есть 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 я установил путь выполнения = = usr / share / vim / vim71

Но теперь, когда модули загружаются, они изменяют этот путь выполнения, а когда загружается патоген, это еще хуже. Есть ли способ указать хеш имени модуля для dirPath, чтобы избежать этого подверженного ошибкам поиска? Или способ вручную указать путь выполнения для каждого модуля в vimrc?

Вот пример моего пути выполнения после того, как патоген загрузит мои модули. Очевидно, что любая дальнейшая загрузка модуля вызывает поиск всех этих путей перед тем, как найти правильный путь.

runtimepath = ~ / .vim, ~ / .vim / расслоение / Align294, ~ / .vim / пучок / minibufexpl.vim _-_ Elegant_buffer_explorer, ~ / .vim / бушель ndle / The_NERD_Commenter, ~ / .vim / расслоение / The_NERD_tree, ~ / .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 / расслоение / taglist, ~ / .vim / расслоение / The_NERD_C mmenter, ~ / .vim / расслоение / The_NERD_tree, ~ / .vim / расслоение / TLIB, ~ / .vim / комплект / ВИМ-аддон-менеджер, ~ / .vim / комплект / ВИМ-добавить н-менеджер известный-хранилищами, ~ / .vim / расслоение / ВИМ-аддон-MW-утилиты, / вар / Библиотека / ВИМ / аддоны, / USR / доли / ВИМ / vimfiles, / и г / доля / ВИМ / vim71, / USR / доли / ВИМ / vimfiles / после того, / вар / Библиотека / ВИМ / аддонов / после того, как, ~ / .vim / расслоение / snipMate / после того, как, ~ / .vi /after,~/.vim/bundle/snipMate/after

Ответы [ 3 ]

2 голосов
/ 14 февраля 2011

это может быть не связано, но для меня переменная DISPLAY имеет большое значение во времени, которое требуется для запуска vim (даже если я скомпилировал vim без графического интерфейса пользователя). Попробуйте с

DISPLAY= vim

и

DISPLAY=:0 vim

и посмотрите, заметите ли вы разницу.

2 голосов
/ 13 февраля 2011

Я использую vim-addon-manager и у меня есть 33 пути в rtp, но для запуска и принудительного закрытия vim (с vim -c 'qa!') требуется около 0,7-0,8 секунд, поэтому проблема заключается в одном из плагинов иливаша система.Чтобы проверить, сколько времени занимает загрузка каждого плагина, попробуйте следующий скрипт:

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])'))

Откроется новый файл, содержащий точно такую ​​же таблицу, что и в конце.of profile.log, но 1) для скриптов, а не для функций, 2) несортированные.

Если проблема в вашей системе, вы можете попробовать следующее:

  1. Когда компьютер начнет создаватьram-диск и подключите его к ~ / .vim, затем скопируйте все плагины туда.
  2. Попробуйте объединить плагины в один файл, см. :h scriptmanager2#MergePluginFiles() (vim-addon-manager должен быть активирован)
  3. Обновите свой компьютер
  4. Попробуйте создать жесткие ссылки на все плагины в ~ / .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
    
0 голосов
/ 14 февраля 2011

http://pastebin.com/R6E4czN7

Я вставил вывод vim -V в pastebin (должен быть действителен в течение 1 месяца).Это говорит само за себя.Поисковик поисков (414 строк поиска - большинство из них бесполезны).Мне нужно уменьшить количество некорректных поисков.

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_Commenteraut.vim "[J 1297651453.80756: поиск" /root/.vim/bundle/The_NERD_tree/autoload/scriptmanager.vim"[J 1297651453.83: поиск "/root/.vim/bundle/tlib/autoload/scriptmanager.vim"J1297651453.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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...