Use sudo with .vimrc
VimCentosVim Problem Overview
I'm using CentOS and created a .vimrc
file in my /home
directory. I tested it out by creating a txt file and yes, that worked fine. Now, I have my project files in my /srv
directory with SELinux turned on. I tried opening a file: vim README.txt
and yes, my .vimrc
settings are still being applied.
Now, since I'm in the /srv
directory, simply doing vim
means that my file is read only. So, I do sudo vim README.txt
in order to be able to edit files. Now, the problem lies that once I do sudo
, none of my .vimrc
settings are applied. I tried creating a copy of .vimrc
in the /srv
folder but that didn't work either.
How do I apply .vimrc
settings while using sudo
?
Vim Solutions
Solution 1 - Vim
Use sudoedit
instead of sudo vim
. You should be doing that anyway. Make sure your EDITOR
environment variable is set to vim
(probably already is, or vim
is the default; you can set it in your .profile
analog if need be).
Solution 2 - Vim
As shown here, you can use the following:
sudo -E vim README.txt
From the man page:
-E The -E (preserve environment) option indicates to the security policy that the user wishes to preserve their existing environment variables. The
security policy may return an error if the -E option is specified and the user does not have permission to preserve the environment.
The accepted answer is the most secure. But this one is more flexible as I can use sudo -E operation
with any operation, I don't have to configure anything else beforehand.
Solution 3 - Vim
/root/.vimrc is the working directory of sudo vim.
You need copy your .vimrc file from /home/ec2-user/.vimrc to /root/.vimrc
Solution 4 - Vim
The presented solutions in the other responses work but are not very practical, as you have to enter you password every time you want to edit a file.
I usually have a tmux
session open within which I am rooted via sudo su
, so I enter my password once at the beginning of the session and can then work for hours without having to enter it again.
I worked around the issue presented here by creating the following symbolic links :
sudo su
ln -s /home/MY-USER-NAME/.vimrc .vimrc
ln -s /home/MY-USER-NAME/.vim .vim
You might need to remove the /root/.vim/
directory first.
I hope this helps