Configurações e plugins quando root (`sudo vim`)?

15

É realmente frustrante quando preciso editar um arquivo como root e usá-lo sudo vim somefile.confe não consigo usar nenhuma das minhas combinações de teclas, configurações e plugins.

Existe uma maneira de obter todas as minhas personalizações quando preciso editar como root?

Estou usando o vim-plug para meus plugins.

Robbie Wxyz
fonte
5
Em uma nota lateral: sudo vim fileé melhor escrito como sudo -e file(desde que você defina a variável de ambiente EDITOR=vim).
Lcd047
@ lcd047: você deve fazer esse comentário em uma resposta
static_rtti

Respostas:

14

Em vez de abrir o vim como root, você pode simplesmente salvar como root redirecionando para tee. Aqui está um exemplo:

:w !sudo tee % > /dev/null

Isso pode ser útil para alias no seu .vimrc, eu uso :Sw:

command! -nargs=0 Sw w !sudo tee % > /dev/null
user530873
fonte
4
Isso é útil para o I did a bunch of editing and then realized I should have used sudoedit, mas para o caso geral, sugiro usar sudo -e/ sudoedit.
jamessan
7

Duas coisas:

  1. Use $ sudo -e filepara editar filecom $EDITOR. Adicione export EDITOR=/path/to/vimse $EDITORainda não estiver definido.

  2. Ir baunilha é uma excelente maneira de combater o vício em plugins.

romainl
fonte
-1 para sugerindo plug-in de recuperação de dependências (J / K, sem realmente downvote)
Robbie Wxyz
3
Note que isso não roda o vim como root, como sudo vimfaz. A edição acontece como seu usuário normal e o sudo lida com a atualização do arquivo original.
jamessan
Nota: existem duas opções semelhantes para sudo: -Ee -e. -Esignifica "ambiente de preservação" e não é esse que você deseja. -e, por sua vez, significa "não execute um comando, mas edite um arquivo com um procedimento definido".
precisa saber é o seguinte
3

Parece que tudo o que você precisa fazer é enraizar o link simbólico ~/.vimrce o ~/.vim/seu.

Apenas execute como root:

ln -s /home/<user>/.vimrc /root/.vimrc
ln -s /home/<user>/.vim/ /root/.vim/

E isso deveria bastar!

(PS: Eu descobri isso agora e queria compartilhar com outros noobs. Entre em contato se houver uma maneira melhor.)

Robbie Wxyz
fonte
1
Geralmente, isso pode causar problemas, pois alguns arquivos relacionados ao vim serão gravados como raiz no diretório inicial e, mais tarde, você encontrará erros ao tentar executar sua própria configuração do vim como seu próprio usuário.
Caleb
0

Se você souber antecipadamente que precisa editar um arquivo como root, use os comandos sudoedit <file>ou sudo -e <file>fará a instalação em um ambiente especial para fazê-lo com suas preferências habituais do editor. É feita uma cópia do arquivo e seu editor é iniciado para editá-lo (como seu usuário). Quando você sai, o arquivo é copiado de volta para o local original como raiz.

Essa é a maneira mais segura e recomendada, mas no caso de a) você não perceber com antecedência, precisará escrever como root ou b) desejar editar e salvar alterações incrementais no local, precisará de outra coisa. Para esse fim, a solução sudo tee proposta pela smpl está definitivamente no caminho certo, mas existem algumas pequenas melhorias que podem ser feitas para lidar com casos extremos . Notavelmente, a diferença no tratamento do prompt da senha sudo em uma interface GUI vs. interfaces de console merece atenção.

Uma maneira mais fácil de configurar isso é usar o plug - in vim-eunuch . Ele tem esse problema específico e algumas outras coisas úteis reunidas em um pacote útil. O uso é tão simples quanto chamar :SudoWrite. Eu até uso um mapeamento de acesso um pouco mais prático:

cmap w!! call SudoWrite()

Isso deve permitir que você grave um arquivo como root usando :w!!.

Caleb
fonte
-1

Outra opção é executar sudo -E vim somefile.confa edição, o que preservará seu ambiente, portanto, seus .vimrcplugins e serão usados.

RSabet
fonte
Ei, bom truque! Isso é muito útil para o Vi e muitos outros comandos.
Robbie Wxyz
3
Isso tem os mesmos efeitos colaterais que vinculam sua configuração ao diretório inicial do root: ou seja, quaisquer operações ou plugins do vim que gravam dados de estado o farão no diretório inicial. Esses arquivos acabam pertencendo à raiz e causarão erros mais tarde, pois o usuário normal não poderá continuar usando-os.
Caleb