智享技巧屋
第二套高阶模板 · 更大气的阅读体验

vim里临时执行命令?别乱按,这几个组合键真管用

发布时间:2026-02-10 13:50:51 阅读:106 次

写代码改配置时突然想查个时间、看看磁盘还剩多少空间,或者顺手把某个日志文件 grep 一下——又不想退出 vim 切到终端?其实 vim 自带「临时执行命令」的能力,不用插件,不依赖外部脚本,纯原生就能搞定。

最常用::! 命令模式下直接调系统命令

在普通模式下按 : 进入命令行,输入 ! 后跟任意 shell 命令即可。比如:

!date

回车后会立刻显示当前时间,然后自动回到 vim 编辑界面。再比如:

!df -h .

查看当前目录所在分区的使用情况,输出完按回车就继续编辑,不打断工作流。

带结果插入::r! 把命令输出“粘”进文档

如果想把命令结果直接塞进当前文件里(比如生成时间戳、插入当前路径),用 :r!

:r!pwd

光标所在位置会新增一行,内容就是当前路径;再比如:

:r!ls -1 *.log | head -3

把最近三个 log 文件名插入到光标下方,写部署说明或排查记录时特别顺手。

安全小提醒:别在敏感配置里乱试

在编辑 nginx.conf、sudoers 或数据库连接配置时,慎用 !sh!bash 这类交互式命令——万一误操作改了权限、删了文件,又没及时保存备份,恢复起来挺麻烦。日常查信息、快速验证没问题,但涉及修改系统状态的操作,建议先切出去确认清楚。

冷知识::terminal 可以开内置终端(Vim 8.0+ / Neovim)

如果命令稍复杂,或者要连着敲几条,可以输入:

:terminal

vim 底部会拉起一个嵌入式终端窗口,Ctrl-W N 切回去,Ctrl-W T 切回来,和 tmux 分屏逻辑接近。退出终端用 :q 或直接输 exit。适合调试脚本、抓包分析这类需要连续交互的场景。

记住几个核心:用 ! 看一眼就走,用 :r! 往里塞内容,用 :terminal 干一票大的。熟了之后,连鼠标都不用碰,手指不离主键盘区,效率翻倍。