使用' sudo'进行编辑时,不会加载.vimrc配置文件

时间:2014-09-27 18:43:58

标签: vim vi

我的.vimrc文件有问题,问题是它有时会被加载,有时却没有。

  1 set number
  2 syntax on
  3 set autoindent
  4 map <F2> :!g++ % -Wall -time -O<CR>
  5 echo "it works!"

我已经添加了回音来检查它是否已加载,以及我输入的时间,例如vim .vimrc,它会被加载并显示我&#34;它可以正常运行&#34;在终端,但当我输入例如sudo vim test.cpp它没有加载,消息也没有显示出来。我正在使用debian。

5 个答案:

答案 0 :(得分:14)

当您使用sudo时,Vim会在其他用户(root)下启动。由于此用户具有不同的主目录,因此加载了另一个~/.vimrc(如果该用户没有加载.vimrc,则为无。您可以通过多种方式解决问题:

  1. 您可以直接指定sudo vim -u $HOME/.vimrcsudo -e <file>的位置(但这不会对插件提供帮助)。
  2. 您可以使用sudoedit.vimrc
  3. 您可以将.vim(和sudo ln -s $HOME/.vimrc .vimrc; sudo ln -s $HOME/.vim .vim插件目录)符号链接到root:{{1}}
  4. 您可以将root的整个主目录更改为与您的相同(由于安全性和访问权限,不推荐使用!)

答案 1 :(得分:2)

sudo vim导致vim以root用户身份运行。这意味着vim在root的主目录中查找vimrc而不是你的。

您需要解决的两个选择是使用

sudo -e <file>

或者将vim配置复制到root用户的主目录。

sudo -esudoedit将文件复制到tmp目录,并允许您对其进行编辑,然后在保存时将其复制回来。这比使用sudo vim更安全,是解决此问题的推荐方法。

答案 2 :(得分:1)

您可以使用-E标志保留您的环境变量,以便vim可以找到您的vim配置。

-E, --preserve-env

指示用户希望保留其现有环境变量的安全策略。如果用户没有保留环境的权限,则安全策略可能会返回错误。

使用方式如下:

sudo -E vim /path/to/file

但是请注意,它不如sudoedit安全,因为您将信任具有root访问权限的vim配置(以及所有插件)。

答案 3 :(得分:0)

我想在 AWS EC2 Amazon AMI 实例上使用vim

以上答案都没有帮助我使用sudo配色方案或插件。然而,找到它的解决方案是here

.profile.bashrc或类似内容中添加:

EDITOR=vim
VISUAL=$EDITOR
export EDITOR VISUAL

然后使用sudoedit /path/to/file编辑文件。

答案 4 :(得分:0)

sudo vim /etc/sudoers

更改此行:

Defaults env_reset

收件人:

Defaults !env_reset

然后重新登录您的shell