.vimrc配置文件在使用';sudo';
我对.vimrc文件有问题,问题是它有时被加载,有时不被加载.vimrc配置文件在使用';sudo';,vim,vi,Vim,Vi,我对.vimrc文件有问题,问题是它有时被加载,有时不被加载 1 set number 2 syntax on 3 set autoindent 4 map <F2> :!g++ % -Wall -time -O<CR> 5 echo "it works!" 1套编号 2关于 3套自动缩进 4地图:!g++%-Wall-time-O 5 echo“它起作用了!” 我添加了echo来检查它是否加载,当我键入例如vim.vimrc时,它会加载并在终端中
1 set number
2 syntax on
3 set autoindent
4 map <F2> :!g++ % -Wall -time -O<CR>
5 echo "it works!"
1套编号
2关于
3套自动缩进
4地图:!g++%-Wall-time-O
5 echo“它起作用了!”
我添加了echo来检查它是否加载,当我键入例如
vim.vimrc
时,它会加载并在终端中显示“它工作”,但当我键入例如sudo vim test.cpp
时,它不会加载,消息不会显示。我正在使用debian。sudoVim
导致vim作为根用户运行。这意味着vim在根目录的主目录中查找vimrc,而不是您的主目录
解决这个问题的两个选择是使用
sudo -e <file>
sudo-e
或者将vim配置复制到root的主目录
sudo-e
或sudoedit
将文件复制到tmp目录,并允许您对其进行编辑,然后在保存时将其复制回。这比使用sudo vim
更安全,是解决此问题的推荐方法。当您使用sudo
时,vim会在不同的用户下启动(root
)。由于该用户有不同的主目录,因此会加载另一个~/.vimrc
(如果该用户没有主目录,则无主目录)。您可以通过多种方式解决此问题:
.vimrc
:sudo vim-u$HOME/.vimrc
的位置(但这对插件没有帮助)sudo-e
或sudoedit
.vimrc
(以及.vim
插件目录)符号链接到root:sudo ln-s$HOME/.vimrc.vimrc;sudo ln-s$HOME/.vim.vim
我想在AWS EC2 Amazon AMI实例上使用
vim
以上两个答案都没有帮助我获得配色方案或使用sudo
的插件。然而,让它工作的解决方案是:
在.profile
、.bashrc
或类似文件中添加:
EDITOR=vim
VISUAL=$EDITOR
export EDITOR VISUAL
然后使用
sudoedit/path/to/file
编辑文件。您可以使用-E
标志保存环境变量,以便vim可以找到您的vim配置
向安全策略指示用户希望保留其现有环境变量。如果用户没有保留环境的权限,安全策略可能会返回错误
像这样使用它:
sudo -E vim /path/to/file
但是请注意,它不如sudoedit安全,因为您将信任具有root访问权限的vim配置(以及所有插件)。sudo-vim/etc/sudoers
更改此行:
Defaults env_reset
致:
并重新登录您的shell请不要将用户的
.vimrc
符号链接到root用户的shell。通过这种方式,恶意程序可以编写命令,这些命令将在每次运行sudo vim
@Yassine:Right时以root用户身份运行。不幸的是,任何与root用户共享用户的Vim配置的机制都有这个问题,即使您手动同步文件。每次都必须检查.vimrc
的全部内容;如果$UID==0 | execute system(…)| endif(或者更模糊的东西)确实可能隐藏在那里,这对我的ubuntu 20.04有效,但不知道为什么。。。任何知道它的人都可以添加更多的解释。
Defaults env_reset
Defaults !env_reset