使用方法
- 在 “缩进方式” 和 “缩进大小” 中选择缩进。在 “行尾符” 中选择换行符,在 “字符编码” 中选择编码方式。
- 勾选需要的文件类型分区:“在 Markdown 中保留行尾空格”、“YAML 使用两个空格缩进” 和 “Makefile 配方用制表符缩进”。
- 复制 “.editorconfig 文件” 中的文本,或下载它,然后保存到项目的顶层文件夹中。
- 阅读 “每一行的含义”,核对每个属性的作用。
文件的工作方式
许多编辑器和 IDE 会读取 .editorconfig 文件,并把其中的设置应用到与各个分区匹配的文件上。分区标题是方括号中的文件名模式,其下的属性适用于每一个匹配的文件。后面的分区会覆盖前面分区中同一属性的设置。root = true 这一行会停止查找,因此设置只作用于本文件夹及其下的文件夹。
- * 匹配除斜杠以外的任意字符。
- ** 匹配任意字符,包括斜杠。
- {yml,yaml} 匹配其中任一文本,因此 *.{yml,yaml} 同时匹配两种文件。
文件类型分区
- Markdown:行尾的两个空格会形成换行,因此 *.md 关闭了删除行尾空格的设置。
- YAML:YAML 不允许用制表符缩进,因此 *.{yml,yaml} 用空格缩进,每一级两个空格。
- Makefile:每一行配方都必须以制表符开头,因此 Makefile 设置 indent_style = tab。
选择数值
- 空格是代码中常见的选择。如果团队所有编辑器都以相同宽度显示制表符,使用制表符也合适。
- LF 是 Linux、macOS 及大多数代码仓库中项目常用的换行符。CRLF 是 Windows 文本文件的换行符。
- UTF-8 是标准编码。只有在某个工具需要时,才使用带字节顺序标记的 UTF-8。
示例:默认选项
使用空格、缩进大小2、LF、UTF-8、删除行尾空格、文件末尾换行,并勾选三个文件类型分区时,文件包含一行 root、一个适用于所有文件且含6个属性的分区,以及 Markdown 和 Makefile 分区各一个属性、YAML 分区两个属性。表格列出了11行属性,这里显示其中6行。
| 分区 | 属性 | 值 |
|---|---|---|
| 文件顶部 | root | true |
| 所有文件 | indent_style | space |
| 所有文件 | indent_size | 2 |
| Markdown(.md) | trim_trailing_whitespace | false |
| YAML(.yml、.yaml) | indent_style | space |
| Makefile | indent_style | tab |
常见问题
.editorconfig 文件应放在哪里?
放在项目的顶层文件夹中,与 README 放在一起。编辑器会先在每个文件所在的文件夹中查找它,然后逐级向上查找,遇到第一个带有 root = true 的文件时停止。
这个文件会自动重新格式化代码吗?
它本身不会。它告诉编辑器和插件在编辑或保存文件时使用哪种缩进、换行符和编码。真正重新格式化代码的是格式化工具或代码检查工具,其中一些工具也会读取同样的设置。
为什么 Markdown 分区要保留行尾空格?
在 Markdown 中,行尾的两个空格会形成换行。删除它们会把两行合并成一行,因此这一分区只为 .md 文件关闭删除行尾空格的设置。
为什么 Makefile 必须使用制表符?
make 会在制表符之后读取每一行配方,以空格开头的配方会报错。因此 Makefile 分区会把名为 Makefile 的文件的 indent_style 设为 tab。
子文件夹可以取消其中某个设置吗?
可以,使用 unset 值即可取消之前设置的属性。本页只写入普通的值,因此如果需要,请在子文件夹自己的 .editorconfig 文件中添加这一行。
文件会被发送到服务器吗?
不会。文件完全在您的浏览器中,根据您的选择生成,您选择的内容不会被保存,也不会发送到任何服务器。
资料来源
- EditorConfig:文件格式与支持的属性(英文)
- EditorConfig 规范:分区、通配符与 root(英文)
- CommonMark 0.31.2:硬换行,即行尾两个空格(英文)
- YAML 1.2.2:缩进中不得使用制表符(英文)
- GNU Make 手册:配方行以制表符开头(英文)
数据和文字最近核对于2026年11月10日星期二。