Пролог
На самом деле вы ответили на свой вопрос, так что это действительно та же проблема, что и раньше. Это вызвано алгоритмом, который 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