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

2016-10-20 liyangweb.com 李杨 服务器

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

:w !sudo tee %

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

这条命令是什么意思呢?


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

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

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

这个是说你的文件已经被改过了,而当前vim打开的还是原始的文件,是确定还是重新载入文件? 我们当然是要新文件了,所以敲入 L ,这时候就可以放心的退出编辑器了。

标签: Linux

评论:

外贸电商培训
2016-10-22 19:40
果断MARK

发表评论:

Powered by emlog 冀ICP备13011830号-1