使用Vim实现每3行文本批量合并拼接的方法咨询
Vim 每3行批量合并的实用操作方案
针对你手头36行短文本、合并为12行制作Markdown表格的场景,以下都是Vim原生功能,不需要额外安装插件。
全文件一次性批量处理(首选,零出错)
直接在普通模式下输入以下命令,回车即可跑完整个文件的合并操作:
:let i=line('$') - 2 | while i >= 1 | execute i.','.(i+2).'join' | let i = i - 3 | endwhile
- 逻辑说明:从文件尾部的3行组合开始往前逐组合并,每次抓取连续3行执行
join操作,因为是从后往前处理,前面的行号不会因为后面的合并操作发生偏移,完全不会出现漏行、错行的问题 - 默认输出效果:相邻原行内容之间自动插入单个空格分隔,和你给出的示例完全匹配(三行原文本会拼成
原第一行 原第二行 原第三行的单行内容) - Markdown表格场景适配:如果需要换用竖线
|作为分隔符,把命令里的join改成join '|',合并后的内容会直接变成行1|行2|行3的格式,套上Markdown表格语法就能直接用
操作注意事项
- 合并后如果效果不符合预期,按一次
u就能撤销全部操作 - 只要文件行数是3的整数倍(你的36行完全符合这个条件),处理结果刚好是总行数/3的合并行,和你预期的36行生成12行的目标完全一致
内容的提问来源于stack exchange,提问作者npr60
相关产品推荐
相关产品推荐

