Я могу использовать 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, я думаю.
