как мне получить нормальную инициализацию vim при выполнении sudo vim?

как мне получить нормальную инициализацию vim при выполнении sudo vim?

У меня определен псевдоним alias svi='sudo /usr/bin/vim -i /home/jeff/.viminfo -u /home/jeff/.vimrc', но когда я печатаю, svi myfileя получаю

Обнаружена ошибка при обработке /home/jeff/.vimrc:
строка 1:
E117: Неизвестная функция: pathogen#infect

Похоже, мне нужно заставить vim сканировать мой каталог .vim перед выполнением. call pathogen#infect() Как это сделать, и вообще, как убедиться, что при запуске sudo vimя получу ту же среду, что и при простом запуске vim?

решение1

как мне получить нормальную инициализацию vim при выполнении sudo vim?

Используя $ sudo -e filenameвместо $ sudo vim filename.

Эта команда:

  1. запросить ваш пароль (если этого требует политика безопасности sudoers);
  2. сделать копию filenameв /tmp/;
  3. Открой этокак и тыс первым редактором, найденным путем проверки следующего в следующем порядке: $SUDO_EDITOR, $VISUAL, $EDITOR, и, наконец, списка редакторов, указанных в /etc/sudoers;
  4. при записи скопируйте его обратно в исходное имя файла.

Более подробную информацию можно найти по ссылкам man sudoи .man sudoers

решение2

Хотя я и намерен принять ответ @romainl как предпочтительное решение (после того, как он его немного доработает), я предпринял еще одну попытку поиска решения ошибки, которую я получал, потому что ненавижу, когда компьютеры берут надо мной верх.

Оказывается, ошибка связана с тем, как runtimepathопция vim разрешается при запуске от имени root. Поэтому, чтобы исправить ошибку, я немного изменил свой псевдоним на alias svi='sudo /usr/bin/vim -i /home/jeff/.viminfo -u /home/jeff/.svimrc'и поместил следующие три строки в /home/jeff/.svimrc

set runtimepath=$HOME/.vim,$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after,$HOME/.vim/after,/home/jeff/.vim
source /etc/vimrc
source /home/jeff/.vimrc

Я больше не получаю ошибку, и мои пользовательские вещи, кажется, работают (пока). Но если я столкнусь с какими-либо другими глюками, я :help initializationеще раз просмотрю, чтобы посмотреть, что еще должно быть в моем файле .svimrc...

Связанный контент