:wq 在 Vim 中不保存

Moh*_*ani 10 vim

我试图用来:wq保存我在 Vim 中编辑过的文本文件,但是当我输入时:wq出现错误

E45: 'readonly' option is set (add ! to override)`  
Run Code Online (Sandbox Code Playgroud)

当我添加!:wq喜欢:wq!,我得到这样的:

"/etc/dhcp/dhcpd.conf"

"/etc/dhcp/dhcpd.conf" E212: Can't open file for writing
Run Code Online (Sandbox Code Playgroud)

我要编辑的文件dhcpd/etc/dhcpd路径上。

我怎样才能做到这一点?

job*_*bin 16

您需要使用超级用户权限打开文件,如下所示:

sudo vi /etc/dhcp/dhcpd.conf
Run Code Online (Sandbox Code Playgroud)

编辑按该文件i,然后保存并按下退出Esc,然后要么:wq:x或只是:w保存。


感谢Riking的建议sudoedit:您可以sudoedit /path/to/file/filename使用sudo <editor> /pat/to/file/filename. 这对于企业级机器或生产机器很有用,因为 sudoedit 记录到/var/log/auth.log.

如果要更改 sudoedit 的默认编辑器,请执行以下操作:

sudo update-alternatives --config editor
Run Code Online (Sandbox Code Playgroud)

然后按Return并选择您选择的编辑器,然后再次按Return


另请参阅:关于为什么 sudoedit 可能具有优势的关于 redit 的讨论

  • 对于这些情况,我更喜欢 `sudoedit` - 它会创建一个临时副本,运行编辑器,然后复制结果。如果您之前为该命令选择了“nano”,请运行“EDITOR=vi sudoedit /etc/file”。 (3认同)

小智 9

/etc包含所有配置文件,因此要编辑/etc您需要超级用户权限的文件,但有时我们忘记使用sudo. 但是那个时候我们也可以用

:w !sudo tee %
Run Code Online (Sandbox Code Playgroud)

然后输入您的管理员密码

:q!
Run Code Online (Sandbox Code Playgroud)

成功退出