Este é um problema de usabilidade que costuma acontecer comigo:
Abro um arquivo de sistema somente leitura com o vim, até mesmo editando-o, porque não estou atento o suficiente ou porque o vim no sistema está mal configurado. Depois que minhas alterações são feitas, eu fico presa em escrevê-las em um arquivo temporário ou perdê-las, porque: w! não vai funcionar.
Existe um comando vim (: W !!!) que permite escrever o buffer atual como superusuário? (O Vim solicita seu sudo ou senha su naturalmente)
sudoedit
comando. Esta questão está mais focada em esquecer de digitá-la em primeiro lugar e em elevar depois de iniciar o editor.Respostas:
Explicação: Com
!
, você pode executar programas. Ao prefixá-lo com: w, o conteúdo do arquivo (o material que você possui no vim, não o arquivo original, mais precisamente: o buffer) será fornecido ao comando na entrada padrão.%
é substituído pelo nome do arquivo e>/dev/null
evita que o conteúdo seja impresso novamente na tela (que é o comportamento usual detee
).Eu encontrei uma maneira ainda mais curta.
dd
não imprime no stdout para que você possa salvar a coisa nula.
O mesmo é para
:r
, que insere a saída do comando fornecido, para que você possa, por exemplo, inserir a data atual no seu arquivo usando:r !date
fonte
Experimentar:
fonte