Sublime Text 无原生一键合并多文件功能,需依赖Python脚本、命令行或手动操作:脚本法最可控(需统一UTF-8编码),命令行法适合大批量文本文件(注意过滤二进制文件),手动法适合少量文件且需人工干预,而Find in Files不可用于合并。

Sublime Text 没有一键合并多个已打开文件内容的原生命令,所有“批量合并”都依赖外部脚本、命令行或手动组合操作——靠菜单点不出来,装插件也解决不了根本问题。
用 Python 脚本读取指定文件列表并写入合并结果
这是最可控、可复用的方式,尤其适合固定目录下定期合并 .log、.txt 或配置片段:
- 新建一个
merge.py文件,和待合并文件放在同一目录下 - 内容如下(注意显式声明编码,否则中文会乱码):
import os files = ['a.txt', 'b.txt', 'c.txt'] with open('merged.txt', 'w', encoding='utf-8') as out: for f in files: with open(f, encoding='utf-8') as i: out.write(i.read().rstrip('\n') + '\n' + '-'*50 + '\n') -
.rstrip('\n')防止两个文件末尾都有换行,导致中间多出空行 - 运行前确认所有源文件都是
utf-8;若含GBK文件,需单独处理或先用File → Reopen with Encoding转码
用命令行 cat 或 type 合并整个文件夹
不依赖 Sublime,速度快、无内存压力,适合大量小文件:
- macOS/Linux:
cat /path/to/folder/*.txt > combined.txt - Windows:
type C:\path\to\folder\*.txt > combined.txt - 加文件分隔符更清晰(避免内容粘连):
for file in ./src/*.js; do echo "// === $file ===" >> combined.js cat "$file" >> combined.js echo "" >> combined.js done
- 注意:
*不匹配隐藏文件(如.env),要包含它们得写.* *.js并排除.和.. - 如果文件夹里有二进制文件(如
.png),cat会把乱码塞进combined.txt,建议先find过滤文本类型
在 Sublime 里手动并排复制粘贴(零依赖、最可靠)
适合文件数 ≤5、需人工调整顺序或删减内容的场景,不依赖插件、不踩编码坑:
- 右键任一标签页 →
Move to New Group,或按Ctrl+Alt+1/2切分视图 - 确保目标文件(新建或已有)光标停在想插入的位置
- 切到源文件 →
Ctrl+A全选 →Ctrl+C复制 → 切回目标文件 →Ctrl+V - 每次粘贴后手动加一个空行:
\n是硬性分隔,别指望文件自带换行符对齐 - 如果某源文件末尾没换行,下一段内容会紧贴着写过去(比如
line1line2),务必提前检查
别碰 Find in Files 去“模拟合并”
这个功能设计初衷是跨文件搜索替换,不是拼接内容。强行用来合并会出大问题:
-
Find in Files不识别文件边界,Replace All会把所有匹配项无差别替换,无法控制“只在每个文件末尾加换行” - 它跳过
node_modules、.git等目录(即使你写了./),路径过滤逻辑不可控 - 遇到 UTF-8 with BOM 或 GBK 编码文件,直接读不出内容,也不会报错,静默跳过
- 想靠正则把 N 个文件内容“提取出来再拼”,语法复杂度直逼写编译器,且极易漏掉引号嵌套、注释块等边界情况
真正麻烦的从来不是“怎么拼”,而是拼完要不要去重、是否要按修改时间排序、是否要过滤特定行——这些 Sublime 做不了,得在脚本里写逻辑,或者老老实实人工校对。











