EditorConfig 是一套用于统一代码风格的方案,可以帮助开发者在不同的编辑器和IDE之间定义和维护一致的代码风格,同时有利于团队的合作,避免不必要的格式重构。
原理
当打开一个文件时,EditorConfig插件会从该文件所在目录开始往上每一级目录中查找.editorconfig文件,直到找到.editorconfig文件中有root=true这个配置为止,并把该配置文件作为根配置。EditorConfig插件会从根配置文件开始开始往下层读取,下层文件配置会覆盖上层文件配置,所以最接近所打开文件的配置优先级最高。另外,配置文件里的属性名和属性值大小写不敏感,编译时都会被转为小写,而没有被明确指定的某个属性则会使用编辑器默认的配置。
通配符说明
| 通配符 | 作用 |
|---|---|
| * | 匹配除/之外的任意字符串(即不跨目录,特殊字符可以用\ 转义) |
| ** | 匹配任意单个字符(即遍历子目录下的文件) |
| ? | 匹配任意单个字符 |
| [name] | 匹配name字符 |
| [!name] | 匹配非name字符 |
| {s1,s3,s3} | 匹配任意给定的字符串 |
通用属性
| 属性 | 说明 |
|---|---|
| indent_style | [tab/space] |
| indent_size | 对应indent_style=space时的列数 |
| tab_width | 对应indent_style=tab时的列数,默认等于indent_size |
| end_of_line | [lf/crlf/cr] lf(\n)为Unix和OS X的默认值/crlf(\r\n)为Windows的默认值/cr(\r)为Classic Mac OS的默认值 |
| charset | [utf-8/latin1/gbk/etc..] |
| trim_trailing_whitespace | [true/false] 是否将行尾空格自动删除 |
| insert_final_newline | [true/false]是否使文件以一个空白行结尾 |
| root | [true]表明是最顶层的配置文件,发现设为true时,才会停止继续查找 |
设置为unset时可以把配置重置为编辑器默认配置,另外有一些适配不同编辑器的属性,详见wiki 。