vim 强制保存 :w !sudo tee %

:w – 保存 buffer

w的作用是保存当前文件缓存到指定的文件,要深刻理解这句话

查看 vim 帮助:help :w

w for write, Write the whole buffer to the current file.

:w = :w current_file,单独使用时,作用为将文件buffer保存在当前文件中
:w another_file, 将文件buffer保存到另一个文件中,当前文件不改变,效果就是另存为
:w ![cmd], 将文件buffer作为输入交给 shell 命令处理

sudo – 使用管理员权限执行命令

sudo的作用是用来获取管理员权限

因为当前用户没有写权限,所以单独用:w是不能保存文件的

只有通过 sudo 提升权限,再执行tee命令才能将当前缓存保存到原文件名下

tee – 管道分支

tee意为 T 字形的

tee的作用是管道分支,比如echo "hello" | tee file.txt,作用是将”hello”这段标准输入,保存到file.txt同时打印到标准输出(屏幕)中

又如ls -l | tee file.txt | less命令,tee将上一个命令的输出一方面写入file.txt中,另一方面继续传递给less命令

请添加图片描述

% – 当前文件路径寄存器

%是 vim 的一个 read only 寄存器,它储存着当前文件的绝对路径

可以在 vim 命令模式下这么测试一下 – 输出当前文件名

:!echo %

退出 vim 会看到 terminal 会打印出当前文件的路径

强制保存后的警告
执行完这个:w !sudo tee %命令,内容就强制保存了,但是会出一个警告

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

这是因为正在编辑的文件已经在别处被修改了,vim 询问是否要重载新文件进来,按L重载即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值