vim使用管理员权限保存


当我们使用 vim 在修改 host 文件的时候,往往最后退出的时候发现无法保存,提示
E45: 'readonly' option is set (add ! to override)
这时候我们可以使用下面的命令,然后输入管理员密码即可。
:w !sudo tee %
当看到vim编辑器底部提示

W12: Warning: File "hosts" has changed and the buffer was changed in Vim as well
See ":help W12" for more info.
[O]K, (L)oad File:

输入L或者O

解释

  1. 命令:w !{cmd},让 vim 执行一个外部命令{cmd},然后把当前缓冲区的内容从 stdin 传入。
  2. tee 是一个把 stdin 保存到文件的小工具。
  3. %,是vim当中一个只读寄存器的名字,总保存着当前编辑文件的文件路径。所以执行这个命令,就相当于从vim外部修改了当前编辑的文件。

评论