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