Skip to content

代码规范EditorConfig

在项目根目录下创建 .editorconfig 文件

.editorconfig

bash
# ============================================================
# EditorConfig 统一代码风格配置
# 作用:在所有支持 EditorConfig 的编辑器 / IDE 中统一基础编码格式,
#      避免不同开发者因编辑器设置不同产生格式差异。
# 官方规范:https://editorconfig.org
# ============================================================

# 声明本文件为顶层配置(编辑器不再向上查找父级 .editorconfig)
root = true

# ------------------------------------------------------------
# [全局规则] 适用于项目内所有文件
# ------------------------------------------------------------
[*]
# 统一使用 UTF-8 字符集,避免中文/特殊字符在不同系统下乱码
charset = utf-8

# 缩进统一使用空格,禁止混用 Tab(保证不同编辑器显示宽度一致)
indent_style = space

# 默认缩进 2 个空格(前端主流约定,JS/TS/JSX/Vue/JSON 均适用)
indent_size = 2

# Tab 键显示宽度(当个别文件保留 tab 缩进时生效,与 indent_size 保持一致)
tab_width = 2

# 换行符统一使用 LF(Unix 风格),避免 Windows(CRLF)/Mac/Linux 混合导致
# Git diff 出现整行变更的噪音
end_of_line = lf

# 文件末尾强制保留一个空行(POSIX 规范要求,多数 lint 工具默认检查)
insert_final_newline = true

# 自动删除行尾多余空格(减少无意义的 diff)
trim_trailing_whitespace = true

# 单行最大长度提示线(编辑器显示标尺,不强制截断)
max_line_length = 100

# ------------------------------------------------------------
# [Python] 遵循 PEP 8:缩进 4 空格,行宽 79/100 均可,这里取 100
# ------------------------------------------------------------
[*.{py,pyi}]
indent_style = space
indent_size = 4
max_line_length = 100

# ------------------------------------------------------------
# [Java / Kotlin / Scala] JVM 系语言惯用 4 空格缩进
# ------------------------------------------------------------
[*.{java,kt,kts,scala}]
indent_style = space
indent_size = 4
max_line_length = 120

# ------------------------------------------------------------
# [Go] gofmt 官方强制使用 Tab 缩进,宽度 4
# ------------------------------------------------------------
[*.go]
indent_style = tab
tab_width = 4

# ------------------------------------------------------------
# [Makefile] make 语法要求命令行必须以 Tab 开头,严禁改成空格
# ------------------------------------------------------------
[{Makefile,makefile,*.mk}]
indent_style = tab
tab_width = 4

# ------------------------------------------------------------
# [Markdown] 行尾两个空格表示强制换行,因此禁止删除行尾空格
# ------------------------------------------------------------
[*.{md,markdown}]
trim_trailing_whitespace = false
max_line_length = off

# ------------------------------------------------------------
# [YAML] YAML 语法对缩进敏感,统一 2 空格(不支持 Tab)
# ------------------------------------------------------------
[*.{yml,yaml}]
indent_style = space
indent_size = 2

# ------------------------------------------------------------
# [Shell 脚本] 统一 4 空格缩进,强制 LF(CRLF 会导致脚本执行失败)
# ------------------------------------------------------------
[*.{sh,bash}]
indent_style = space
indent_size = 4
end_of_line = lf

# ------------------------------------------------------------
# [Windows 批处理 / PowerShell] 必须使用 CRLF 才能正常运行
# ------------------------------------------------------------
[*.{bat,cmd,ps1}]
end_of_line = crlf

# ------------------------------------------------------------
# [配置文件类] JSON / TOML / INI / XML 等保持 2 空格或默认即可
# JSON 不支持注释,保持最简规则
# ------------------------------------------------------------
[*.{json,toml,ini,xml,svg}]
indent_style = space
indent_size = 2

# ------------------------------------------------------------
# [前端文件] JS / TS / JSX / TSX / Vue / HTML / CSS / Less / Sass
# 显式声明一次,便于团队成员查阅时快速定位前端规则
# (实际与全局规则一致,仅作说明用途)
# ------------------------------------------------------------
[*.{js,jsx,ts,tsx,mjs,cjs,vue,html,css,less,scss,sass}]
indent_style = space
indent_size = 2
max_line_length = 100