:wq在Vim中不保存


8

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

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

当我添加!:wqlike时:wq!,我得到以下信息:

"/etc/dhcp/dhcpd.conf"

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

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

我怎样才能做到这一点?


选择:xZZ退出并保存。它将仅在更改时写入。
Hauleth 2014年

Answers:


14

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

sudo vi /etc/dhcp/dhcpd.conf

通过按编辑文件i,然后按保存,然后按Esc或者:wq:x或保存退出:w


感谢Riking的建议sudoedit:您可以使用sudoedit /path/to/file/filename来编辑root拥有的文件,而不是使用sudo <editor> /pat/to/file/filename。这对于企业级计算机或生产计算机很有用,因为sudoedit登录到/var/log/auth.log

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

sudo update-alternatives --config editor

然后按,然后Return选择所需的编辑器,然后再次按Return


另请参阅:关于redit的讨论,为什么sudoedit可能是有利的


3
sudoedit对于这些情况,我更喜欢-它创建一个临时副本,运行编辑器,然后复制结果。如果先前选择nano了该命令,请运行EDITOR=vi sudoedit /etc/file
2014年

1
@Riking:谢谢sudoedit,甚至不知道它的存在。但是,在谷歌搜索时遇到了这个问题sudoedit。我会建议使用,但如果用户认为有必要使用,则将其留给用户。
Jobin 2014年

sudoedit还拿起的EDITOR变量,它更易于设置比配置方案
穆鲁

9

/etc由所有配置文件组成,因此在/etc您需要超级用户权限的情况下编辑这些文件,但有时我们忘记使用sudo。但那时我们也可以使用

:w !sudo tee %

然后输入您的管理员密码

:q!

成功退出


1
您可以添加cmap w!! w !sudo tee > /dev/null %到您的,.vimrc以允许通过此方法进行保存:w!!。如果你有兴趣,为什么这种方法可行看到stackoverflow.com/questions/2600783/...
格哈德·伯格
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.