在 vim 中可不退出编辑器临时执行 shell 命令:用 :! 执行单条命令(如 :!ls -la),输出显示在命令行区;用 :terminal 进入交互式终端(vim 8.0+/neovim);用 ctrl+z 挂起 vim 返回外部 shell,fg 恢复。

在 Vim 中无需退出编辑器即可临时进入 Shell 执行命令,最常用且高效的方式是使用 :! 命令或 Shell 暂停 功能。
用 :! 执行单条 Shell 命令
在普通模式下输入 :! 后跟任意 Shell 命令,执行完自动返回 Vim(不刷新当前文件):
-
:!ls -la—— 列出当前目录详细信息 -
:!git status—— 查看 Git 状态 -
:!python3 script.py—— 运行 Python 脚本
命令输出会显示在 Vim 底部的“命令行区域”,按 Enter 返回编辑界面。若想查看完整输出,可加 :set shellcmdflag=-i(部分系统需配置),或直接用 :terminal(见下文)。
用 :terminal 进入交互式终端
Vim 8.0+ 和 Neovim 原生支持终端模拟器,输入:
-
:terminal—— 打开一个内嵌终端窗口(新窗口或分屏) -
:terminal bash或:terminal zsh—— 指定 Shell 类型
在终端中可自由执行多条命令、使用方向键、Ctrl+C 中断等。退出终端只需输入 exit 或按 Ctrl+\ Ctrl+N(Vim)/ Ctrl+\ Ctrl+D(Neovim)切回普通模式。
用 Ctrl+Z 暂停 Vim 进入当前 Shell
在普通模式下按 Ctrl+Z,Vim 会挂起并返回到你启动它的那个 Shell(如 Bash/Zsh);执行完命令后,输入 fg 即可恢复 Vim。
- 适合需要多次来回操作的场景(比如查文档、改配置、再回来)
- 注意:该方式依赖外部 Shell,不是 Vim 内置功能,但响应最快
小技巧:快速运行上一条命令或带文件名的命令
Vim 支持命令历史和寄存器引用:
-
:!ls %——%表示当前文件名,统计当前文件行数
:!sudo !! —— 重新执行上一条 Shell 命令(需已启用 <code>set history=200)-
q:—— 打开命令行历史窗口,上下键选择并回车重执行
不复杂但容易忽略











