: wq no Vim não salva

8

Estou tentando usar :wqpara salvar um arquivo de texto que editei no Vim, mas quando entro :wqrecebo o erro

E45: 'readonly' option is set (add ! to override)`  

Quando adiciono !ao :wqgosto :wq!, recebo o seguinte:

"/etc/dhcp/dhcpd.conf"

"/etc/dhcp/dhcpd.conf" E212: Can't open file for writing

O arquivo que quero editar está dhcpdno /etc/dhcpdcaminho.

Como posso fazer isso?

Mohammad Reza Rezwani
fonte
Prefira :xou ZZpara sair e salvar. Ele escreverá apenas em alterações.
Hauleth 25/05

Respostas:

14

Você precisa abrir o arquivo usando permissões de superusuário, da seguinte maneira:

sudo vi /etc/dhcp/dhcpd.conf

edite o arquivo pressionando ie, em seguida, salve e saia pressionando Esce depois ou :wqou :xou apenas :wpara salvar.


Agradecemos a Riking por sugerir sudoedit: você pode usar sudoedit /path/to/file/filenamepara editar arquivos pertencentes à raiz, em vez de usar sudo <editor> /pat/to/file/filename. Isso é útil para máquinas de nível corporativo ou máquinas de produção, desde que o sudoedit faça logon /var/log/auth.log.

Se você deseja alterar o editor padrão para sudoedit, faça o seguinte:

sudo update-alternatives --config editor

pressione Returne escolha o editor de sua escolha e pressione novamente Return.


Veja também: Uma discussão sobre redit sobre por que o sudoedit pode ser vantajoso

jobin
fonte
3
Eu prefiro sudoeditpara essas situações - ele cria uma cópia temporária, executa o editor e copia o resultado. Se você escolheu anteriormente nanopara esse comando, execute EDITOR=vi sudoedit /etc/file.
Riking
1
@ Vikings: Obrigado por sudoedit, nem sabia que existia. No entanto, deparei com isso enquanto pesquisava sudoedit. Vou sugerir, mas deixe para o usuário se achar necessário.
Jobin
sudoedittambém pega na EDITORvariável, é mais fácil de conjunto que do que as alternativas do configure
Muru
9

/etcconsiste em todos os arquivos de configuração. Para editar os arquivos, /etcvocê precisa das permissões de superusuário, mas às vezes esquecemos de usá-lo sudo. mas nesse momento também podemos usar

:w !sudo tee %

depois digite sua senha de administrador

:q!

sair com sucesso

Aditya Jangid
fonte
1
Você pode adicionar cmap w!! w !sudo tee > /dev/null %ao seu .vimrcpara permitir salvar através deste método com :w!!. Se você estiver interessado em saber por que esse método funciona, veja stackoverflow.com/questions/2600783/…
Gerhard Burger