您尚未登录。

楼主 #1 2020-09-01 19:42:50

kk
会员
注册时间: 2020-07-20
已发帖子: 10
积分: 10

【小技巧分享】在不退出vim的情况下使用sudo完成写入

问题

有时候我们操作linux,编辑一些系统文件时是需要sudo操作
的,但是经常忘记使用`sudo `,直接就是vim 打开某个文件,当进行改动时出现以下情况,就要退出,重新用sudo vim 打开文件操作。

20200830163831742.png

解决

我们如何在不退出的情况下完成编写呢?
输入`:w ! sudo tee %`, 回车,出现下面提示,按`o` 再`回车`就可以了。
20200830171122529.png

最后强制退出`:q!`
最后用cat 输入内容检查下,就会发现刚刚的内容已经写入了。

附加

`:w ! sudo tee %`的意思是
:w! {cmd}  让vim 可以执行外部shell命令{cmd},且把当前缓冲区的内容从stdin传入。
tee 是一个把stdin保存到文件里的小工具
% 会vim 里的特殊字符,保存着当前文件的路径
整个意思就是把当前是文件缓冲区的内容(也就是你修改的内容)做为stdin传给tee让它写入到当前文件里。

最近编辑记录 kk (2020-09-01 19:45:01)

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn