Vim 中可调用外部 Shell 命令::!命令执行并查看输出;:read!命令将结果插入文件;:shell进入交互式子 Shell;Vim 8+ 支持 :terminal 内置终端,支持分屏与模式切换。
在 Vim 中调用外部 Shell 命令,不需要退出编辑器就能完成系统操作,比如统计文件、检查语法、临时调试或保存只读文件。关键在于区分几种常用方式,按需求选择。
在命令模式(按 Esc 确保退出插入状态)下输入:
:!命令
例如:
:!ls -l —— 列出当前目录详细信息
:!wc % —— 统计当前文件的行数、字数、字符数(% 代表当前文件名)
执行后会短暂跳转到终端显示结果,按 Enter 即可返回 Vim。
用 :read! 把结果直接加进文本:
:read!date —— 在光标所在行下方插入当前日期
:read!ps aux | grep vim —— 插入匹配的进程信息
也可指定位置:
:2read!uname -r —— 在第 2 行之后插入内核版本
:$read!df -h —— 在文件末尾插入磁盘使用情况
输入:
:shell
会新开一个子 Shell,你可运行多条命令、cd 切换目录、编辑其他文件等;输入 exit 或按 Ctrl+D 返回 Vim。
注意:该 Shell 与 Vim 共享环境变量,但不继承 Vim 的缓冲区修改。
如果 Vim 编译时启用了 +terminal(可用 :version 查看),推荐用:
:terminal —— 水平分屏打开终端
:vertical terminal —— 垂直分屏打开终端
在终端里按 Ctrl- Ctrl-N 可切回正常模式操作窗口,i 键返回输入模式继续执行命令。
不复杂但容易忽略:所有带感叹号(!)的命令都绕过 Vim 安全限制,能执行任意 Shell 命令;保存只读文件时,常用 :w !sudo tee % > /dev/null 配合 sudo 完成强制写入。