序言
事实上你回答了你的问题,所以这确实是你以前遇到的同样的问题。它是由 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').'='
但我不知道第二个问题的好解决方案,只能建议编写一个脚本将文件名转换为完整路径。