关闭文件后,我希望vim保存折叠的代码.我已经将以下代码添加到/ etc / vimrc和〜/ .vimrc中:
au BufWinLeave ?* mkview
au BufWinEnter ?* silent loadview
当我以普通用户打开文件(vim文件)时,它可以按预期工作.如果我改为使用sudo vim文件打开,则不会保存折叠的代码.
我知道/ etc / vimrc正在被读取.我的主题设置在该文件的底部,并且运行良好.上周我在安装vim Surround插件时遇到了类似的问题.在〜/ .vim中安装该文件时,它仅适用于vim文件.要使其与sudo一起使用,我必须将其单独安装在/usr/share / vim / current中.是什么原因造成的?
解决方法:
序言
事实上,您回答了您的问题,所以这确实与您以前遇到的问题相同.这是由Vim用于查找其配置的算法引起的(请参见:help初始化).但是,我不会将您的解决方案称为正确的解决方案.有关如何在sudo环境(例如,成为root用户)中使用配置的信息,请参见:help $VIM.
至于你当前的问题.
请参阅文档中的以下引号. :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生成的文件名带有波浪号而不是完整路径.
第一个问题可以通过在执行:mkview命令之后立即在新的视图文件上运行chown或chmod来解决.应该是这样的:
execute '!chown user:group' eval('&viewdir').'/'.substitute(expand('%:p:~'), '/', '+=', 'g').'='
但是我不知道第二个问题的好解决方案,只能建议编写脚本将文件名转换为完整路径.
标签:folding,vim,sudo,linux 来源: https://codeday.me/bug/20191101/1980555.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。