写在前面
.editorconfig主要用于在不同编辑器及IDE中提供代码一致性。例如缩进、换行、编码等,只有几个简单的配置项,官网用一个页面就讲完了
editorconfig
简单,很简单,这仅仅是个工具,工具又怎么会搞的太难
谁在用
常见于github上的项目,包括 bootstrap
、angular
,html5-boilerplate
等明星项目都在使用。
支持怎么样
主流的编辑器都提供了支持,部分通过插件支持。jetbrains
家的idea
、webstorm
等提供了原生支持,atom
、sublime
、vscode
等需要插件支持。
怎么用
在项目根目录下新建.editorconfig,并配置规则,下面是官方示例1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33# EditorConfig is awesome: https://EditorConfig.org
# top-most EditorConfig file
root = true
# Unix-style newlines with a newline ending every file
[*]
end_of_line = lf
insert_final_newline = true
# Matches multiple files with brace expansion notation
# Set default charset
[*.{js,py}]
charset = utf-8
# 4 space indentation
[*.py]
indent_style = space
indent_size = 4
# Tab indentation (no size specified)
[Makefile]
indent_style = tab
# Indentation override for all JS under lib directory
[lib/**.js]
indent_style = space
indent_size = 2
# Matches the exact files either package.json or .travis.yml
[{package.json,.travis.yml}]
indent_style = space
indent_size = 2
当你打开一个文档即将coding的时候,EditorConfig插件就查找当前被编辑文件所在的目录有么有一个名为 .editorconfig 的文件,如果没有,则开始依次逐级向上查找当前目录的父目录,直到到达工程根目录,或者找到配置了root=true
的配置文件。
如果一个工程中出现多个配置文件,EditorConfig配置文件的读取层级是自上而下的(类似于css规则),最深层的配置文件,最后读取。配置规则也是按照读取的顺序来生效,所以路径上离代码最近的配置规则,优先级最高。
注意:Windows 用户在项目根目录创建.editorconfig文件,可以先创建.editorconfig.
文件,系统会自动重名为.editorconfig。
配置文件
属性不区分大小写。当他们被插件识别的时候,统一转为小写。通常,如果一个属性没有被设置,编辑器将使用自身的默认设置,换句话说就是,如果有属性没被设置,EditorConfig也不会应用自己的默认设置,只有明确设置了属性,这部分规范才会应用到编辑器。
属性列表:
属性名 | 作用 |
---|---|
root | 特殊的属性,必须在配置文件的顶部,在所有的section之外首先设置,设置为true 的时候将结束EditorConfig对配置文件的向上查找 |
indent_style | 设置缩进风格,tab或者space |
indent_size | 用来定义缩进的列数,如果indent_style 为tab,则此属性默认为tab_width。 |
tab_width | 设置tab缩进的列数。默认是indent_size 。 |
end_of_line | 设置为lf ,cr ,crlf 来规定如果要换行,换行符如何生成 |
charset | 设置字符集:latin1, utf-8, utf-8-bom, utf-16be or utf-16le,不建议使用utf-8-bom。 |
trim_trailing_whitespace | 设为true时,去掉行尾的空白字符 |
insert_final_newline | 设为true时,会确保文件在保存的时候,底部总是以一个新行结尾 |
通配符:
符号 | 作用 |
---|---|
* | 匹配除|之外的任意字符串 |
** | 匹配任何字符串 |
? | 匹配任意单个字符 |
[name] | 匹配name字符 |
[!name] | 匹配非name字符 |
{s1,s2,s3} | 匹配给定的任何字符串(以逗号分隔)(自EditorConfig Core 0.11.0起可用) |
{num1..num2} | 匹配num1和num2之间的任何整数,其中num1和num2可以是正数或负数 |
示例
1 | root = true |
配置例外
对于所有的属性来讲,如果属性值被设置为:
unset
,就意味着移除该属性对编辑器的作用,即使该属性之前已经被设置过了。
1 | [*] |
在webstorm中使用
Webstorm默认支持它,配置完成后,不必重新启动Webstorm,它会自动获取配置。
总结
editorconfig很简单,直接看官方文档就行了。