Como posso sair do modo somente leitura no Vim?

38

Abri um arquivo no modo somente leitura; existe uma maneira de sair do modo somente leitura?

nome de usuário errado
fonte
Quais são as limitações no modo somente leitura que estão incomodando você? Se você deseja gravar o arquivo, mesmo que o opere somente para leitura, adicionar um !ao wcomando fará o truque, como Michael afirmou.
Bananguin
11
@ user1129682 é apenas o inconveniente de lembrar de colocar um ponto de exclamação depois de wcada vez que eu quiser salvar. heh
wrongusername

Respostas:

44

Você pode fazer isso:

:set noro

Isso desativa o sinalizador somente leitura, mas se o arquivo subjacente ainda não for gravável por você, o vim ainda não poderá gravar nele.

Philip Kearns
fonte
como reverter isso e voltar a somente leitura?
Louis Hong
2
@LouisHong Muito facilmente: :set ro.
Philip Kearns
11
Isso é perfeito para se você abrir um arquivo gravável, viewmas decidir editá-lo.
wisbucky
9

Você pode executar a chmodpartir do vim:

:!chmod +w %

!significa executar um comando shell e %é o nome do arquivo atual. Você também pode forçar a gravação do arquivo:

:w!
Michael Mrozek
fonte
3

Além da resposta de Michael Mrozek , você pode adicionar uma linha à sua .vimrcque permita gravar em um arquivo que você esqueceu de abrir com permissões elevadas:

" Allows writing to files with root priviledges
cmap w!! w !sudo tee % > /dev/null

Se o arquivo for somente leitura, você precisará digitar apenas :w!!, será solicitada sua senha e o arquivo será gravado com êxito.

jasonwryan
fonte
2

Enquanto :set norofaz o trabalho, ele não verifica se o arquivo foi aberto por outra instância do vim ou atualiza o arquivo se alterado externamente.

Para torná-lo editável e procurar arquivos de troca (que é o padrão para abrir um arquivo com o vim), basta usar o comando edit (: help edit):

:e

Observe que, se o arquivo tiver sido manipulado desde então (mesmo fora do vim), ele atualizará as alterações no buffer atual (o que eu acho normalmente desejável).

Sebastian Müller
fonte
1

Aqui vou eu, embora um pouco atrasado, talvez você já tenha resolvido sua dúvida;) Eu não vi nenhum dos comentários de uma maneira que conheço com o vim , então adiciono:

Depois de editar um arquivo, pressione :wou :wqe você verá a mensagem irritante " A opção E45 'readonly' está definida (adicione! Para substituir) "

A opção E45 readonly está configurada (adicione! Para substituir)

Você pode digitar

:w !sudo tee %

w! sudo tee%

  • w escreve o buffer,
  • !sudo chama o shell com sudo,
  • teeredireciona a saída de vim :wpara a saída com tee e
  • % é o nome do arquivo atual

E isso deve fazer o truque. Observe que isso solicitará o recarregamento do arquivo no vim, para o que você precisa pressionar L

insira a descrição da imagem aqui

xCovelus
fonte