将sudo与.vimrc一起使用

将sudo与.vimrc一起使用,vim,centos,Vim,Centos,我正在使用CentOS,并在我的/home目录中创建了一个.vimrc文件。我通过创建一个txt文件进行了测试,是的,效果很好。现在,我的项目文件在我的/srv目录中,SELinux处于打开状态。我尝试打开一个文件:vim README.txt,是的,我的.vimrc设置仍在应用 现在,由于我在/srv目录中,只需执行vim就意味着我的文件是只读的。因此,为了能够编辑文件,我做了sudo vim README.txt。现在,问题在于一旦我做了sudo,我的.vimrc设置就不会被应用。我尝试在/

我正在使用CentOS,并在我的
/home
目录中创建了一个
.vimrc
文件。我通过创建一个txt文件进行了测试,是的,效果很好。现在,我的项目文件在我的
/srv
目录中,SELinux处于打开状态。我尝试打开一个文件:
vim README.txt
,是的,我的
.vimrc
设置仍在应用

现在,由于我在
/srv
目录中,只需执行
vim
就意味着我的文件是只读的。因此,为了能够编辑文件,我做了
sudo vim README.txt
。现在,问题在于一旦我做了
sudo
,我的
.vimrc
设置就不会被应用。我尝试在
/srv
文件夹中创建
.vimrc
的副本,但也没有成功


如何在使用
sudo
时应用
.vimrc
设置

使用
sudoedit
而不是
sudovim
。你无论如何都应该这么做。确保您的
编辑器
环境变量设置为
vim
(可能已经是,或者
vim
是默认值;如果需要,您可以在
.profile
模拟中设置它)。

如图所示,您可以使用以下选项:

sudo -E vim README.txt
从手册页:

-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.

公认的答案是最可靠的。但是这个更灵活,因为我可以对任何操作使用
sudo-E操作
,我不需要事先配置任何其他操作

其他回复中提供的解决方案有效,但不太实用,因为每次编辑文件时都必须输入密码

我通常会打开一个
tmux
会话,通过
sudo su
在其中扎根,因此我会在会话开始时输入一次密码,然后可以工作数小时而无需再次输入密码

我通过创建以下符号链接来解决此处提出的问题:

获取权限
ln-s/home/MY-USER-NAME/.vimrc.vimrc
ln-s/home/MY-USER-NAME/.vim.vim

您可能需要先删除
/root/.vim/
目录


我希望这有帮助

/root/.vimrc是sudovim的工作目录


您需要将.vimrc文件从/home/ec2 user/.vimrc复制到/root/.vimrc

完美。非常感谢。一个概念性的问题:为什么我应该在
sudovim
上使用
sudoedit
?@noblede>来保证安全性。对于您自己的系统来说可能并不重要,但对于一个拥有
sudoers
权限的用户非常重要。您可以从
vim
运行任何shell命令,因此使用
sudovim
您可以做任何事情
sudoedit
创建文件的临时副本,但不授予此类权限
man sudoedit
man visudo
还有,
$sudo-e filename
。请注意,在退出之前,实际文件不会更新-如果您想保存并测试更改而不关闭vim,则不太好。@Claudio关于您的具体设置,您有更多的详细信息吗
sudo-E*
应该适用于任何命令。您确定要使用的.vimrc是为当前登录的运行用户设置的吗?您确定没有意外切换到另一个用户并使用他们的.vimrc或缺少该用户,而不是您想要使用的用户吗?重试。操作系统:CentOS 7。如果我运行
vim*
,则加载vimrc
。如果我运行
sudoedit
,它也会被加载。但是如果我运行
sudo-evim*
它不会运行。@Claudio*的作用是什么?我不是说你不应该用它,我只是不知道它是干什么用的。另外,我使用的
sudo-evim
没有*这个词对我来说很有用。@still_dreaming_1我以为他指的是他试图编辑的任何文件(用文件名替换*),我认为他实际上并没有键入那个文件。好问题。与sudoedit解决方案不同,此解决方案还为您提供了使用诸如CTRL+P等扩展的灵活性。我只想添加一个简短的解释:如果执行
sudo
,您将自己切换到
root
用户,因此
$HOME
将成为
/root
目录(除非使用了
-E
选项)。这意味着
vim
将在
/root/.vimrc
中加载配置<默认情况下,code>vim没有配置为从当前目录加载配置,这就是为什么它没有从
/srv
目录加载配置。这里唯一正确的答案是