序言
事实上你回答了你的问题,所以这确实是你以前遇到的同样的问题。它是由 Vim 用来查找其配置的算法引起的(请参阅 参考资料:help initialization)。但我不会称你的解决方案是正确的。有关:help $VIM如何在sudo环境中使用配置的信息(例如 being 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').'='
但我不知道第二个问题的好解决方案,只能建议编写一个脚本将文件名转换为完整路径。