I want vim to save folded code after I've closed the file. I've added the following code to both /etc/vimrc and ~/.vimrc:
au BufWinLeave ?* mkview
au BufWinEnter ?* silent loadview
When I open a file as a regular user (vim file) it works as expected. If I instead open with sudo vim file it doesn't save folded code.
I know /etc/vimrc is being read. My theme is set at the bottom of that file and is working fine. I ran into a similar problem last week installing the vim surround plugin. When that was installed in ~/.vim it only applied to vim file. To get it working with sudo I had to install it separately in /usr/share/vim/current. What could be causing this?
In fact you answered your question, so this is indeed the same issue you had before. It is caused by the algorithm Vim uses to find its configuration (see :help initialization
). But I wouldn't call your solution a correct one. See :help $VIM
for information how you can use your configuration in sudo
environment (eg being root
).
See the following quotes from the documentation. :help :mkview
:
:mkvie[w][!] [file] ...
When [file] is omitted or is a number from 1 to 9, a
name is generated and 'viewdir' prepended.
...
And :help 'viewdir'
:
'viewdir' 'vdir' string (default for ... for Unix: "~/.vim/view", ...
So after doing sudo
all views are stored by Vim at /root/.vim
.
Make viewdir
point to your ~/.vim/view
directory, with something like the following in /root/.vimrc
:
:set viewdir=/home/user/.vim/view
Though, this approach has some issues itself:
/root
or /home/user
, because Vim generates file names with tilde instead of full paths. The first issue can be solved by running chown
or chmod
on new view file right after executing :mkview
command. It should be something like:
execute '!chown user:group' eval('&viewdir').'/'.substitute(expand('%:p:~'), '/', '+=', 'g').'='
But I don't know good solution for the second issue, can only suggest writing a script to convert file names to full paths.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.