Escreve o arquivo vim como superusuário?

10

Este é um problema de usabilidade que acontece frequentemente comigo:

Eu abro um arquivo do sistema somente leitura com o vim, mesmo editando-o, porque não sou atencioso o suficiente, ou porque o vim no sistema está mal configurado. Uma vez que minhas alterações são feitas, eu estou preso a ter que escrevê-los em um arquivo temporário ou perdê-los, porque: w! não vai funcionar.

Existe um comando vim (: W !!!) que permite gravar o buffer atual como um superusuário? (O Vim pedia seu sudo ou su senha naturalmente)

    
por zimbatm 26.05.2010 / 18:24

2 respostas

15
:w !sudo tee % >/dev/null'

Explicação: Com ! , você pode executar programas. Prefixando-o com: w, o conteúdo do arquivo (o material que você tem no vim, não o arquivo original, mais precisamente: o buffer) será dado ao comando na entrada padrão. % é substituído pelo nome do arquivo e >/dev/null evita que o conteúdo seja novamente impresso na tela (que é o comportamento usual de tee ).

Eu encontrei um caminho ainda mais curto. dd não imprime para stdout, então você pode salvar a coisa nula.

:w !sudo dd of=%

O mesmo vale para :r , que insere a saída do comando especificado, para que você possa, por exemplo, inserir a data atual em seu arquivo usando :r !date

    
por 26.05.2010 / 21:00
5

Tente:

:w !sudo tee % >/dev/null
    
por 26.05.2010 / 18:28

Tags