Skip to content

强制保存只读文件

问题

当使用 vim 时以普通用户身份打开一个只有 root 用户才能操作的文件时。编辑完成后但无法保存,很是苦恼。

解决方法

  • 底行执行命令::w !sudo tee %

w: 表示保存文件

!: 表示执行外部命令

tee: linux 命令,这个有点复杂,可以查看 linux 命令帮助

%: 在执行外部命令时,%会扩展成当前文件名;这个%区别于替换时的%,替换时%的意义是代表整个文件,而不是文件名

优化

上述命令虽然解决了我们保存只读文件的需求,但是命令繁琐不好记,所以我们可以自己配置一下它的使用方法。

更改 .vimrc 文件,为它添加一条映射命令

shell
" 强制保存只读文件
cmap w!! w !sudo tee > /dev/null %

这样,简单的运行:w!!即可。命令后半部分> /dev/null 作用为显式的丢掉标准输出的内容。

Released under the MIT License.