属性详解
基于 EditorConfig 规范编写
速查
- 通用属性(跨编辑器广泛支持):
indent_style/indent_size/tab_width/end_of_line/charset/trim_trailing_whitespace/insert_final_newline indent_style:tab或spaceindent_size:整数,软 tab 宽度;设为字面量tab则取tab_widthtab_width:整数,默认等于indent_size,通常不必写end_of_line:lf/cr/crlfcharset:latin1/utf-8/utf-8-bom/utf-16be/utf-16letrim_trailing_whitespace、insert_final_newline:true/false- 键名与取值大小写不敏感,解析时统一小写;
unset取消任意属性 max_line_length:取正整数或unset,但仅部分编辑器支持
缩进相关
indent_style
设为 tab(硬 tab)或 space(软 tab,即空格)。
[*.py]
indent_style = space
[Makefile]
indent_style = tabindent_size
整数,表示每级缩进的列数 / 软 tab 的宽度。
特殊值 tab:当 indent_size = tab 时,缩进宽度取 tab_width(若未指定,则取编辑器设置的 tab 宽度)。
[*.go]
indent_style = tab
indent_size = tab # 跟随用户的 tab 可视宽度tab_width
整数,表示一个 tab 字符占的列数。默认取 indent_size 的值,因此通常无需单独指定——只有当它与 indent_size 不同时才写。
用 Tab 缩进时,留空 indent_size
若用 tab 缩进,可不写 indent_size,让每位开发者按自己偏好显示 tab 宽度。这是规范推荐的「能不写就不写」思路。
换行与编码
end_of_line
控制换行符表示:lf(Unix)、cr(老 Mac)、crlf(Windows)。跨平台协作常统一为 lf。
[*]
end_of_line = lfcharset
文件编码,取值:latin1 / utf-8 / utf-8-bom / utf-16be / utf-16le。前端项目通常用 utf-8。
utf-8-bom 慎用
除非工具链明确要求 BOM,否则前端项目用 utf-8(无 BOM);BOM 可能导致某些打包/脚本场景出现意外字符。
空白处理
trim_trailing_whitespace
true 删除每行行尾、换行符之前的空白;false 则保留。
insert_final_newline
true 保存时确保文件以一个换行结尾;false 则确保没有。POSIX 文本文件惯例是以换行结尾。
[*]
trim_trailing_whitespace = true
insert_final_newline = truemax_line_length(有限支持)
强制在指定字符数后硬换行;取正整数或 unset(关闭)。它不在「通用属性」之列——只有部分编辑器/工具支持(如 Vim、Emacs、JetBrains 系、Prettier 等),在不支持的编辑器中会被忽略。
[*.md]
max_line_length = off # 注:部分实现写 off,规范层面用 unset 关闭别依赖它做硬约束
因覆盖面有限,不要把 max_line_length 当作团队强制规则;要硬性限制行宽,交给 Prettier / linter。
unset:取消某属性
任意属性都可取值 unset,用于「撤销」上层已设置的效果,让编辑器回到默认:
[*]
indent_size = 2
[legacy/**]
indent_size = unset # 老代码不强制,用编辑器默认大小写规则
键名(property name)大小写不敏感,解析后统一小写;上述属性的取值同样大小写不敏感(会被核心库小写化)。因此 Indent_Style = Tab 等价于 indent_style = tab。
字段与 glob 段匹配规则的完整说明见 参考。