共117行
2026-04-22 12:25:44
Neovim 的“执行命令”主要分为两大场景:调用外部 Shell 命令(如 ls、python)和执行内部 Vim 命令(如保存、替换)。掌握这两者的组合,能让你在不离开编辑器的前提下完成大部分系统操作。
这是最常用的功能,让你在编辑器内直接与终端交互。
在命令模式下使用 :!<命令>,执行后按回车返回 Neovim。
:!ls -la " 列出当前目录文件
:!python --version " 检查 Python 版本
:!git status " 查看 Git 状态
适用场景:快速查看系统信息,不修改缓冲区内容。
将外部命令的执行结果直接插入到当前光标位置下方。
:r !date " 插入当前日期时间
:r !curl -s http://example.com " 插入网页内容
适用场景:将命令输出作为文本内容插入文档。
将选中的文本“喂”给外部命令处理,并用结果替换原文本。
!!<命令>。
!!sort " 对当前行内容排序
!!tr 'a-z' 'A-Z' " 转为大写V 选中行,然后输入 :!<命令>。:1,10!sort " 将第1-10行排序
:'<,'>!python -c "import sys; print(sys.stdin.read().upper())" " 选区转大写适用场景:格式化代码、排序列表、调用脚本处理选区文本。
% 占位符)% 代表当前文件名,常用于运行脚本。
:!python % " 运行当前 Python 文件
:!node % " 运行当前 JavaScript 文件
:!gcc % -o output && ./output " 编译并运行 C 程序
适用场景:快速测试当前编写的代码。
这些是编辑器自身的功能命令,用于高效编辑。
:w " 保存文件
:wq / :x " 保存并退出
:q! " 强制退出不保存
:bn / :bp " 切换下一个/上一个缓冲区
:ls " 查看所有缓冲区列表
/pattern " 向前查找
?pattern " 向后查找
:s/old/new/g " 替换当前行所有 old
:%s/old/new/g " 替换全文所有 old(加 c 可确认)
:g/pattern/d " 删除所有包含 pattern 的行
使用 | 分隔多个命令,一次性执行。
:w | !python % " 先保存,再运行当前脚本
:g/TODO/d | %s/old/new/g " 先删除所有 TODO 行,再全局替换
在 Neovim 的 Lua 配置文件中,使用 vim.cmd 调用 Vim 脚本命令。
-- 设置配色方案
vim.cmd("colorscheme catppuccin")
-- 保存文件(Lua 写法)
vim.cmd("w")
-- 带变量拼接命令
local file_path = "/tmp/test.lua"
vim.cmd("edit " .. file_path)注意:Neovim 0.7+ 推荐优先使用 Lua 原生 API(如 vim.api.nvim_buf_set_lines),仅在无对应 Lua 函数时使用 vim.cmd。
| 场景 | 命令格式 | 示例 |
|---|---|---|
| 运行外部命令 | :!<cmd> |
:!ls |
| 插入输出 | :r !<cmd> |
:r !date |
| 处理当前行 | !!<cmd> |
!!sort |
| 处理选区 | Visual 模式选中后 :!<cmd> |
选中代码后 :!python |
| 运行当前文件 | :!<解释器> % |
:!python % |
| Lua 调用 | vim.cmd("cmd") |
vim.cmd("w") |
最佳实践:在编写代码时,善用 :w | !python % 这种组合键(或映射成快捷键),实现“保存即运行”的流畅体验。