转自: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-16lecharset = utf-8# 缩进使用 tab 或者 spaceindent_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文件 |
