转自: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的配置和使用

  1. # EditorConfig文件使用INI格式。斜杠(/)作为路径分隔符,#或者;作为注释。路径支持通配符:
  2. # 表明是最顶层的配置文件,发现设为true时,才会停止查找.editorconfig文件
  3. root = true
  4. # * 匹配除/之外的任意字符
  5. # ** 匹配任意字符串
  6. # ? 匹配任意单个字符
  7. # [name] 匹配name字符
  8. # [!name] 不匹配name字符
  9. # [s1,s2,s3] 匹配给定的字符串
  10. # [num1..num2] 匹配num1到mun2直接的整数
  11. # 对所有文件生效
  12. [*]
  13. # 文件的charset。有以下几种类型:latin1, utf-8, utf-8-bom, utf-16be, utf-16le
  14. charset = utf-8
  15. # 缩进使用 tab 或者 space
  16. indent_style = space
  17. # 缩进为 space 时,缩进的字符数
  18. indent_size = 2
  19. # 缩进为 tab 时,缩进的宽度
  20. # tab_width = 2
  21. # 换行符的类型。lf, cr, crlf三种
  22. end_of_line = lf
  23. # 是否将行尾空格自动删除
  24. trim_trailing_whitespace = true
  25. # 是否使文件以一个空白行结尾
  26. insert_final_newline = true
  27. # 对后缀名为 md 的文件生效
  28. [*.md]
  29. 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文件