Я могу использовать vim -u filename
чтобы использовать filename
вместо моего .vimrc
умолчанию. Я использую этот метод при переключении пользовательских контекстов (su
) на использование моего .vimrc
даже если он работает как суперпользователь.
Как я могу добиться того же и для папки , в которой по умолчанию является ~/.vim
, так что я могу указать Vim из командной строки в другую папку?
Чего я хочу достичь
Хорошо, предположим, что пользователь joe
(HOME=/home/joe
) и пользователь root
(HOME=/root
). У пользователя joe
есть псевдоним для vim
который выглядит следующим образом (но изначально был установлен с помощью переменной $HOME
чтобы сделать это динамическим):
alias vim='vim -p -N -n -i NONE -u "/home/joe/.vimrc"'
Затем пользователь joe
делает что-то вроде sudo su -
(но с добавленной магией), в результате чего .bashrc
и другие полезности из /home/joe
будут загружены для пользователя root
. Пользователь root
теперь имеет точно такой же псевдоним для vim
как показано выше.
Проблема в том, что этот .vimrc
используется в различных системах и в различных сценариях. Часто учетная запись Джо называется joe
, но иногда это будет что-то вроде local.joe
или чего-то еще, что приведет к другому значению $HOME
. Поэтому жесткое кодирование абсолютного пути к папке ~/.vim
не кажется хорошей идеей. Однако в нашем вышеупомянутом сценарии пользователь root
не имеет папки /root/.vim
которая, как ожидается, будет существовать по умолчанию через загруженный файл .vimrc
(/home/joe/.vimrc
).
Чего я хочу добиться - предпочтительно в командной строке - это заставить Vim использовать плагины и т.д. Из-под /home/joe/.vim
при запуске от имени пользователя root
(при условии, что alias
установлен так, как показано - другие случаи можно игнорировать). Если есть какой-либо динамический метод через VimScript, пожалуйста, предоставьте указатели. Но использование таких переменных, как $HOME
может привести к уловке 22, я думаю.