You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Vim命令行无需额外缓冲区向文件写入多行内容?

哈哈,这个坑我之前也踩过!在Vim里直接用cat << EOF确实会因为命令行缓冲区默认不支持多行输入而翻车,给你几个实用的小技巧,保证用最少操作搞定多行测试数据:

方法1:用Vim内置函数一键生成(最推荐)

直接在命令行模式输入这条命令就行,不用处理换行符,输入量极小:

:call writefile(['第一行测试数据', '第二行内容', '第三行随便写'], 'test.txt')

原理是调用Vim的writefile()函数,把数组里的每一项作为一行写入指定文件,完美解决多行输入的问题,适合提前知道测试内容的场景。

方法2:让命令行缓冲区支持多行输入

如果非要用类似cat << EOF的语法,得给Vim的命令行加换行:

  1. 先输入:cat << EOF > test.txt
  2. 按下Ctrl+V(注意是Vim命令行里的操作,不是终端的),再按Enter,此时命令行会换行,光标跳到下一行
  3. 输入第一行测试数据,重复Ctrl+V+Enter换行,依次输入后续内容
  4. 最后一行输入EOF,按回车执行就行

这个方法适合临时想输入不确定内容的情况,就是操作步骤比第一个多一点。

方法3:先写内容再保存(最直观)

如果不想折腾命令行,直接开个新缓冲区写内容:

  1. 输入:new打开新窗口,在里面输入所有测试行
  2. 输入:w test.txt保存到临时文件
  3. 输入:q关闭这个窗口就行

这种方式完全不用记命令,适合内容较多或者需要编辑调整的测试数据。

方法4:结合shell的printf命令

要是你习惯shell语法,也可以用:r!调用外部命令:

:r! printf "第一行\n第二行\n第三行\n" > test.txt

不过这个需要手动给每行加\n换行,适合内容比较短的情况。

内容的提问来源于stack exchange,提问作者Student4K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:20:42