
У меня определен псевдоним
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
.
Эта команда:
- запросить ваш пароль (если этого требует политика безопасности sudoers);
- сделать копию
filename
в/tmp/
; - Открой этокак и тыс первым редактором, найденным путем проверки следующего в следующем порядке:
$SUDO_EDITOR
,$VISUAL
,$EDITOR
, и, наконец, списка редакторов, указанных в /etc/sudoers; - при записи скопируйте его обратно в исходное имя файла.
Более подробную информацию можно найти по ссылкам 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...