Inicie o Vim como meu usuário com privilégios de root


10

Eu tenho meus arquivos Vim personalizados ~/.vime configurações ~/.vimrc. No entanto, às vezes eu tenho que editar alguns arquivos /etce tal.
Se eu iniciar o Vim assim:

$ sudo vim /etc/rc.conf

Perco minha configuração, pois o Vim usa a configuração padrão. Então: como posso executar o Vim com privilégios de root para editar arquivos sem perder as configurações do usuário (que estão no meu diretório pessoal)?
Eu tentei:

$ su username -c "vim /usr/lib/python2.7/setuptools/dist.py"

mas Bash me dá Permission denied. No entanto, o comando acima funciona, por exemplo, para: /etc/acpi/handler.sh. Por que é que?

Nota: o nome de usuário não é root.

Respostas:


15

Em vez de sudo vim /etc/rc.confusar sudoedit /etc/rc.confou sudo -e /etc/rc.conf. Pode ser necessário definir a variável de ambiente EDITOR para vim. Isso executará o próprio vim como o usuário normal, usando sua configuração normal, em uma cópia do arquivo que será copiada novamente quando você sair.


Ótima solução! Vou verificar isso também.
Rubik

Eu tentei sudoedit /etc/rc.confe sudo -e /etc/rc.confele abre o vim, mas meu ~ / .vimrc não é carregado. O que estou fazendo errado?
apparat

@apparat Tente export EDITOR=vimprimeiro - pode estar tentando executar vi, o que não sei se ele carrega o vimrc, mesmo quando é vim.
usar o seguinte comando

Bem, acho que esta é a melhor resposta. Obrigado a ambos.
31412

@ Random832 export EDITOR=vimfuncionou. Eu pensei que o vi não estivesse instalado no meu sistema e é apenas um link simbólico para o vim. Obrigado
apparat

6

Você pode usar -upara dizer ao vim qual arquivo rc carregar. por exemplo

sudo vim -u ~user/.vimrc /etc/rc.conf

se digitar isso toda vez que você precisar, for tedioso, crie um alias:

alias sudovim='sudo vim -u ~user/.vimrc'

Observe que vim -upode causar falhas nos plug-ins ou nos arquivos chamados rc se eles carregarem outros arquivos relacionados a $ HOME - $ HOME agora é o diretório inicial do root, não o usuário. Isso pode ser resolvido com, por exemplo, links simbólicos no diretório inicial do root ou por codificação de caminhos absolutos.


Isso é ótimo, obrigado. Eu resolvi assim: alias svim="HOME=/home/user && sudo vim -u $HOME/.vimrc".
21312

1

sudo vim -S /home/user/.vimrc /etc/rc.conf

Isso é equivalente a:

sudo vim /etc/rc.conf + :source /home/user/.vimrc

e também pode ser aliasado:

alias svim='sudo vim -S /home/user/.vimrc'

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.