Use sudo with .vimrc

VimCentos

Vim 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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionnoblerareView Question on Stackoverflow
Solution 1 - VimExplosion PillsView Answer on Stackoverflow
Solution 2 - VimleetNightshadeView Answer on Stackoverflow
Solution 3 - VimJames HeView Answer on Stackoverflow
Solution 4 - VimAlexandre BourlierView Answer on Stackoverflow