Пролог
На самом деле вы ответили на свой вопрос, так что это действительно та же проблема, что и раньше. Это вызвано алгоритмом, который Vim использует для поиска своей конфигурации (см. :help initialization
). Но я бы не назвал ваше решение правильным. См. :help $VIM
для получения информации о том, как вы можете использовать свою конфигурацию в среде sudo
(например, будучи root
).
Что касается вашего текущего вопроса.
См. следующие цитаты из документации. :help :mkview
:
:mkvie[w][!] [file] ...
When [file] is omitted or is a number from 1 to 9, a
name is generated and 'viewdir' prepended.
...
И :help 'viewdir'
:
'viewdir' 'vdir' string (default for ... for Unix: "~/.vim/view", ...
Таким образом, после выполнения sudo
все представления сохраняются Vim в /root/.vim
.
Решение
Сделайте так, чтобы viewdir
указывало на ваш каталог ~/.vim/view
, с чем-то вроде следующего в /root/.vimrc
:
:set viewdir=/home/user/.vim/view
Хотя сам этот подход имеет некоторые проблемы:
- Обновление представлений, сохраненных пользователем root, приведет к ошибкам прав доступа.
- Вы не сможете передать сохраненные представления для файлов с
/root
или /home/user
, потому что Vim генерирует имена файлов с тильдой вместо полных путей.
Первую проблему можно решить, запустив chown
или chmod
для нового файла просмотра сразу после выполнения команды :mkview
. Это должно быть что-то вроде:
execute '!chown user:group' eval('&viewdir').'/'.substitute(expand('%:p:~'), '/', '+=', 'g').'='
Но я не знаю хорошего решения для второй проблемы, могу только предложить написать скрипт для преобразования имен файлов в полные пути.
person
xaizek
schedule
28.07.2012
sudo -E vim
следует попытаться запустить Vim с сохраненными переменными среды. - person still_dreaming_1   schedule 28.02.2017