扫码关注官方订阅号
在管理线上服务器的时候,经常要编辑一些不属于操作用户的文件,就是只有r权限的那种,每次保存都会提示read only。只能先记下来改了什么,然后再退出,然后 sudo vim 再做保存 有没有什么办法,可以不要退出vim进程,直接用vim命令获取sudo权限,然后把文件存进去的?
认证0级讲师
请先搜索,再提问 http://segmentfault.com/q/10100000001...
:w !sudo tee %
命令:w !{cmd},让 vim 执行一个外部命令{cmd},然后把当前缓冲区的内容从 stdin 传入。tee 是一个把 stdin 保存到文件的小工具。 而 %,是vim当中一个只读寄存器的名字,总保存着当前编辑文件的文件路径。 所以执行这个命令,就相当于从vim外部修改了当前编辑的文件,好完工。
:w !{cmd}
{cmd}
tee
1.:w !sudo tee % 2.:%!sudo bash -c "cat > '%'"
:w !sudo tee % #其实是调用了bash命令
我设置了
map <leader>sudo :w !sudo tee %
这样直接<leader>sudo调用命令 挺方便
sudo vim 不就完事了。2楼太复杂了。 还有啊,楼主,你对linux权限一点都不了解啊? 改动root相关的配置必须sudo啊?
推荐一个链接吧, 讲得不错, 国内也有blog引用了How does the vim “write with sudo” trick work?
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
请先搜索,再提问 http://segmentfault.com/q/10100000001...
命令
:w !{cmd}
,让 vim 执行一个外部命令{cmd}
,然后把当前缓冲区的内容从 stdin 传入。tee
是一个把 stdin 保存到文件的小工具。而 %,是vim当中一个只读寄存器的名字,总保存着当前编辑文件的文件路径。
所以执行这个命令,就相当于从vim外部修改了当前编辑的文件,好完工。
我设置了
这样直接<leader>sudo调用命令 挺方便
sudo vim 不就完事了。2楼太复杂了。
还有啊,楼主,你对linux权限一点都不了解啊? 改动root相关的配置必须sudo啊?
推荐一个链接吧, 讲得不错, 国内也有blog引用了
How does the vim “write with sudo” trick work?