转自:https://www.yuque.com/dukang-hfttn/mo27v1/bwbr4x
EditorConfig 介绍
顾名思义,EditorConfig就是编辑器配置,就是指统一不同编辑器的代码风格的配置。举个例子:比如我们要控制一个多人维护的项目缩进统一用2个空格。那么每个人的IDE都是不同的,一种方法是几个人约定好各自配置自己的IDE,但是如果每个人又维护着多个项目,几个项目间就会相互影响。所以更好的办法是由项目本身来控制代码风格。也就是使用EditorConfig来控制。
EditorConfig包含一个用于定义代码格式的文件和一批编辑器插件,这些插件是让编辑器读取配置文件并以此来格式化代码。
完整文档:https://github.com/editorconfig/editorconfig/wiki/EditorConfig-Properties
工作原理是
当你在编码时,EditorConfig 插件会去查找当前编辑文件的所在文件夹或其上级文件夹中是否有 .editorconfig 文件。如果有,则编辑器的行为会与 .editorconfig 文件中定义的一致,并且其优先级高于编辑器自身的设置。
EditorConfig的配置和使用
# EditorConfig文件使用INI格式。斜杠(/)作为路径分隔符,#或者;作为注释。路径支持通配符:
# 表明是最顶层的配置文件,发现设为true时,才会停止查找.editorconfig文件
root = true
# * 匹配除/之外的任意字符
# ** 匹配任意字符串
# ? 匹配任意单个字符
# [name] 匹配name字符
# [!name] 不匹配name字符
# [s1,s2,s3] 匹配给定的字符串
# [num1..num2] 匹配num1到mun2直接的整数
# 对所有文件生效
[*]
# 文件的charset。有以下几种类型:latin1, utf-8, utf-8-bom, utf-16be, utf-16le
charset = utf-8
# 缩进使用 tab 或者 space
indent_style = space
# 缩进为 space 时,缩进的字符数
indent_size = 2
# 缩进为 tab 时,缩进的宽度
# tab_width = 2
# 换行符的类型。lf, cr, crlf三种
end_of_line = lf
# 是否将行尾空格自动删除
trim_trailing_whitespace = true
# 是否使文件以一个空白行结尾
insert_final_newline = true
# 对后缀名为 md 的文件生效
[*.md]
trim_trailing_whitespace = false
文件格式详
EditorConfig文件使用INI格式。斜杠(/)作为路径分隔符,#或者;作为注释。路径支持通配符:
通配符 | 说明 |
---|---|
* | 匹配除/之外的任意字符 |
** | 匹配任意字符串 |
? | 匹配任意单个字符 |
[name] | 匹配name字符 |
[!name] | 不匹配name字符 |
[s1,s2,s3] | 匹配给定的字符串 |
[num1..num2] | 匹配num1到mun2直接的整数 |
EditorConfig支持以下属性:
属性 | 说明 |
---|---|
indent_style | 缩进使用tab 或者space |
indent_size | 缩进为space 时,缩进的字符数 |
tab_width | 缩进为tab 时,缩进的宽度 |
end_of_line | 换行符的类型。lf , cr , crlf 三种 |
charset | 文件的charset。有以下几种类型:latin1 , utf-8 , utf-8-bom , utf-16be , utf-16le |
trim_trailing_whitespace | 是否将行尾空格自动删除 |
insert_final_newline | 是否使文件以一个空白行结尾 |
root | 表明是最顶层的配置文件,发现设为true时,才会停止查找.editorconfig文件 |