从vim提权保存文件说开去

我经常使用普通用户权限去编辑root权限才能保存的文件,从前都是编辑了半天发现保存的时候没有写入权限。后来发现

其实可以在vim里执行命令,达成一种提权保存的效果。

解决方案

1
:w !sudo tee > /dev/null %

通过w命令,将当前文件内容作为标准输入,并且sudo提权,tee将标准输入写入到%中,这里%自动替换成当前文件名.而新的标准输出则丢弃到null

Tee command

每次都输出这一串命令当然跟我们懒惰的性格不符,因此实用vim配置文件创建映射。

修改.vimrc文件:

1
2
cmap w!! w !sudo tee > /dev/null %
cmap qq q! # 为了快速强制退出,我还是多加一个映射吧。

另外,从网上看到还能这样添加映射,通过重定向,实现相同的效果,提权新开一个shell:

1
cmap w!! w !sudo sh -c "cat > %"

额外的技巧

1
2
3
4
5
6
7
/word/ # 跳转到包含word的第一行

ddp # 删除一行,粘贴到下一行,效果就是上下行互换

:/some/m$ # 将有some的行移动到末尾

A # 行尾插入模式

先到这吧,vim魔法无穷无尽。