使用vi/vim编辑只读文件,打开的时候忘记加sudo怎么办

Posted 奇妙之二进制

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用vi/vim编辑只读文件,打开的时候忘记加sudo怎么办相关的知识,希望对你有一定的参考价值。

在linux服务器上操作一些配置文件时,有很大一部分都是只读文件,我们当然知道要使用sudo命令用管理员身份来打开并编辑,但是有时候需要编辑好多文件,某一个文件打开的时候很有可能就忘记加sudo,这时候问题来了,当我们愉快的编辑完成之后,输入:wq 时就悲剧了,提示没有权限,那我们怎么办呢?记下刚刚修改的内容,强制退出,重新用管理员身份打开,重新编辑。好麻烦有木有,有一个更简单的方法,如下:

:w !sudo tee %

如果不是root用户,这里会提示你输入密码。

这条命令是什么意思呢?

命令:w !cmd,让 vim 执行一个外部命令cmd,然后把当前缓冲区的内容从 stdin 传入。

tee是一个把 stdin 保存到文件的小工具。

而 %,是vim当中一个只读寄存器的名字,总保存着当前编辑文件的文件路径。

所以执行这个命令,就相当于从vim外部修改了当前编辑的文件。

执行完上面的命令,vi/vim会有一个提示

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

这个是说你的文件已经被改过了,而当前vim打开的还是原始的文件,是确定还是重新载入文件?

我们当然是要新文件了,所以敲入 L ,这时候就可以放心的退出编辑器了。

以上是关于使用vi/vim编辑只读文件,打开的时候忘记加sudo怎么办的主要内容,如果未能解决你的问题,请参考以下文章

使用vi/vim编辑只读文件,打开的时候忘记加sudo怎么办

Linux常用命令-vi/vim

makefile在练习的时候,“编辑”是用linux下的vi/vim吗??

文件编辑器 vim

使用 Vi/Vim 编辑器:高级概念 | Linux 中国

vi/vim编辑器的使用总结