在 vim 中,:r !command 将命令结果插入光标所在行下方;替换当前行需 dd 后 :put =system('cmd') 或 cc 后 =system('cmd');插入模式下 = 可内联插入;还可指定行号如 :12r !uptime。

在 Vim 中,可以使用 :r !command 命令将外部命令的执行结果插入到当前光标所在行的下方(即光标所在行之后);若要插入到当前光标所在行的位置(覆盖或替换该行),需配合删除当前行再插入,或使用更精准的方式。
插入到光标所在行下方(最常用)
这是最直接、安全的做法:执行命令后,结果追加在当前行之后。
- 光标定位到任意位置,输入 :r !date → 插入当前日期时间到下一行
- :r !ls -l → 将当前目录详细列表插入到光标所在行下面
- 注意::r 总是插入在当前行之后,不会覆盖原行
替换当前行为命令结果
如果想用命令输出完全替换当前这一行,可组合操作:
- 先删除当前行:dd
- 再执行插入::put =system('whoami')(注意是 =system(...),不是 !command)
- 或者一步完成(在普通模式下):cc(删行并进入插入模式),然后按
=system('pwd') → 在插入模式中用寄存器插入表达式结果
在光标处内联插入(不换行)
若希望命令结果像文本一样插入在光标当前位置(不另起行),使用表达式寄存器:
- 确保处于插入模式(按 i 或 a)
- 按
=system('uname -r') ,再按 Enter → 结果直接插入在光标处,不换行 - 支持简单表达式,如
=strftime('%Y-%m-%d') 插入格式化日期
保存命令结果到指定行号或范围
适合批量或精确定位插入:
- :12r !uptime → 在第 12 行下方插入 uptime 输出
- .,.+2r !head -3 /etc/hosts → 在当前行及后两行区域下方插入 hosts 前三行
- :0r !echo "BEGIN" → 插入到文件最开头(第 0 行即首行前)











