可视化 .editorconfig 构建,缩进 / 字符集 / 换行 / 末尾空白 / 按 glob 覆盖,浏览器本地
- 本地处理
- 分类 开发运维
- 适合 分享前检查文件类型、大小、元数据和明显不匹配信号。
root = true [*] indent_style = space indent_size = 2 charset = utf-8 end_of_line = lf insert_final_newline = true trim_trailing_whitespace = true
这个工具能做什么
可视化生成 .editorconfig,这个文件让团队里每个人的编辑器在缩进、 字符集、换行符上保持一致,任何编辑器一打开文件就生效,不需要构建步骤。 先设好全局 `[*]` 段:indent_style(空格/Tab)、indent_size、charset、 end_of_line(lf/crlf/cr)、insert_final_newline、trim_trailing_whitespace、 max_line_length,再按需加按 glob 的覆盖段,比如 `[*.md]` 关掉末尾空白 裁剪(Markdown 用行末两个空格表示硬换行)、`[*.{js,ts}]` 强制 2 空格。 打开 `root = true`,EditorConfig 就不再往父目录继续找配置。可以先选一个 语言预设(Python 4 空格、Go 用 Tab、Web 2 空格、Makefile 必须 Tab) 把常用段铺好再微调。右侧输出面板就是编辑器实际读到的文件,一键复制或 直接下载成仓库根目录的 `.editorconfig`。每次输入都在浏览器里实时渲染, 文件不出本地,配置还会编码进 URL,把"分享链接"发给同事就能复现同一套 设置。支持 VS Code、JetBrains 全家桶、Vim、Sublime 以及任何装了 EditorConfig 插件的编辑器。
工具细节
- 输入
- 文本 + 数值
- 页面会根据工具类型展示文本框、数值控件、文件选择或结构化输入。
- 输出
- 即时结果 + 复制 + 下载
- 结果区优先给出可操作结果,支持项会显示复制、下载或可视化预览。
- 隐私
- 浏览器本地处理
- 主工具逻辑未发现外部 API 调用,输入通常留在当前标签页内处理。
- 保存 / 分享
- 可分享链接状态
- 关键设置会进入 URL,复制链接后别人能复现同一组参数。
- 性能预算
- 首屏 JS ≤ 10 KB
- 没有声明 WASM 依赖,适合快速打开和移动端使用。
- 适用场景
- 开发运维 · 程序员
- 分类和职业标签用于推荐相关工具、组织内链,并帮助用户快速判断是否适合当前任务。
怎么用
-
1. 输入
把内容粘贴或拖入工具面板。
-
2. 处理
点击按钮,在浏览器内本地处理,文件不上传。
-
3. 复制 / 下载
一键复制结果或下载到本地。
.editorconfig 生成器 适合怎么用
适合在上传、交付、归档、客服排查前使用,也适合任何文件离开本机前的本地复核。
适合文件任务
- 分享前检查文件类型、大小、元数据和明显不匹配信号。
- 上传、归档、接收或审核前整理混合文件夹。
- 敏感文件先留在浏览器里处理,不用交给账号型服务。
文件检查项
- 不要只凭扩展名判断真实文件类型。
- 文件发给客户、供应商或公开页面前,先看元数据。
- 复制、转换或导出结果确认前,保留原文件。
下一步可以接着做
这些入口会把当前任务接到更完整的工具链里。
真实使用场景
消灭共享仓库里 Tab/空格的 diff 噪音
同一个 Python 仓库的两个人(一个编辑器用 Tab,一个用 4 空格), 每个 PR 都变成一堆只改了空白的 diff,把真正的改动埋掉。在仓库根目录 放一个 `.editorconfig`,`[*]` 段设 `indent_style = space`、 `indent_size = 4`,提交,两个人的编辑器一打开文件就对齐到同一种缩进。 审查的人不用再翻那些幽灵 diff。30 秒搞定:选 Python 预设,确认 4 空格, 复制,粘进 `.editorconfig`,push。
把 CRLF 挡在跨平台团队之外
一个 Windows 贡献者提交一个文件,突然每一行都显示被改了,因为他的 编辑器写成了 CRLF,而 Linux 团队用 LF。在全局 `[*]` 段设 `end_of_line = lf` 和 `insert_final_newline = true`,装了 EditorConfig 插件的编辑器就会在保存时归一化换行符,在 Git 看到文件之前就处理掉。 再配上 `.gitattributes` 里的 `* text=auto eol=lf` 做双保险,但真正在 编辑器内部把它修好的是 `.editorconfig`。
只给 Markdown 关掉末尾空白裁剪
你的全局规则裁掉末尾空白,对代码是对的,对 Markdown 是错的,因为 Markdown 里行末两个空格表示硬换行。加一个 `[*.md]` 覆盖段设 `trim_trailing_whitespace = false`,你的文稿就保住了换行,而每个 `.js` 和 `.py` 文件依旧被清理。这是 EditorConfig 最经典的覆盖用法,也正是 per-glob 段存在的理由;这个生成器把它做成了一键预设。
对上 Makefile 必须用硬 Tab 的要求
Makefile 的 recipe 行如果用空格开头就会坏,GNU Make 要求必须是一个 字面 Tab。如果你的全局配置强制空格,你碰到的每个 Makefile 都会被悄悄 破坏。加 `[Makefile]` 和 `[*.mk]` 段设 `indent_style = tab`,编辑器就在 这里插入真正的 Tab,而仓库其余部分还是空格。这里的 Makefile 预设替你 连好了;没有它,故障一直藏着,直到 `make` 报 "missing separator"。
让贡献者零配置上手
一个开源贡献者用你从没听说过的编辑器克隆了你的仓库。与其在 CONTRIBUTING.md 里写一段他们会略过的缩进说明,不如让仓库根目录的 `.editorconfig` 在他们第一次打开文件时自动配置好编辑器,前提是他们的 编辑器装了那个几乎人人都有的插件。生成一次文件、提交,缩进/字符集/换行 的规则就随仓库一起带给每个未来的贡献者,不用写文档。
常见踩坑
把 `[*.md]` 这种窄 glob 放在全局 `[*]` 段上面。EditorConfig 后面的段后生效,所以放在覆盖段之后的宽 `[*]` 会把它盖掉。保持 `[*]` 在最前、窄 glob 在下面。这个生成器永远按这个顺序输出。
忘了在顶部写 `root = true`。没有它,EditorConfig 会一直往父目录找并合并所有 `.editorconfig`(包括你 home 目录或 monorepo 父级里某个乱放的),你从没写过的设置就会泄进来。在项目顶层文件里把它设上。
写了 `indent_size = 2` 却留着 `indent_style = tab`。用 Tab 时,`indent_size` 只影响一个 Tab *显示*多宽,不会插入空格。如果你真想要两空格缩进,得同时设 `indent_style = space`,否则文件还是按 Tab 缩进。
隐私说明
整个生成器都是在浏览器标签页里跑的纯 JavaScript。你配置的段、敲进去的 glob、下载的文件都不碰服务器,不上传、不记录你构建了什么、不对你项目的 缩进策略做任何打点。有一点要知道:当前配置会编码进 URL 的 query string, 这样"分享链接"能为同事复现,也就是说你写进 glob 的内容(比如某个内部 路径或文件名)会落到 URL 里,如果你把这个链接粘到 Slack 或工单,也会进 对方的访问日志。glob 通常都很通用(`*.md`、`*.{js,ts}`),很少敏感,但 如果某个 glob 暴露了你仓库结构里的隐私信息,就手动复制文件、别分享 URL。
常见问题
类似工具组合
做你这行的人, 还会一起用这些。