Author:宇宙第一帅
Date: 2017-12-20php
EditorConfig 帮助开发人员定义和维护跨编辑器(或IDE)的统一的代码风格.css
EditorConfig项目由一个定义编码风格的文件和许多文本编辑器插件(使得编辑器可以识别配置文件并在编码的时候应用配置的规范)组成;python
EditorConfig配置文件是易读的,而且和版本控制工具兼容;git
下面是一个示例的 .editorConfig配置文件,该文件配置了 python和js的末行和缩进的规则程序员
# 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
复制代码
查看wiki,获取 真实项目使用EditorConfig的示例github
当你打开一个文档即将coding的时候,EditorConfig插件就查找当前被编辑文件所在的目录有么有一个名为 .editorconfig 的文件, 若是没有,则开始依次逐级向上查找当前目录的父目录,直到到达工程根目录,或者找到配置了root=true
的配置文件。web
若是一个工程中出现多个配置文件,EditorConfig配置文件的读取层级是自上而下的(相似于css规则),最深层的配置文件,最后读取。配置规则也是 按照读取的顺序来生效,因此路径上离代码最近的配置规则,优先级最高。json
EditorConfig文件使用INI格式,同时兼容Python ConfigParser Library使用的格式,而且左右中括号[]在模块(section)名称中容许使用 section名称是路径的globs,相似于gitignore的格式。 只有正斜杠(/)被容许做为路径的分隔符,能够试用 # 或者 ;来作注释,注释不能够跨行。EditorConfig文件使用utf-8来编码, 使用CRLF或者LF来做为行分隔符;xcode
路径的匹配模式和当前支持的EditorConfig属性,解释以下:bash
通配符 | 做用 |
---|---|
* | 匹配任意数量string类型的字符,' / ' 除外 |
** | 匹配任意数量string类型的字符 |
? | 匹配任意单个字符 |
[a-z] | 匹配方括号规定范围内的任意单个字符 |
[!a-z] | 匹配不在方括号规定范围内的任意单个字符 |
{s1,s2,s3} | 匹配任意一个大括号内部美剧的字符(','分隔) |
{num1..num2} | 匹配num1和num2之间的任意一个整数,num1和num2正负均可以 |
注意:并非全部的属性都被没一个插件支持。想要查看完整的属性列表,移步这里
属性名 | 类型 | 做用注解 |
---|---|---|
ident_style | string | 设置为‘tab’或者‘space’,分别告知编辑器强制使用tab键或者使用智能的tab(将tab转为space) |
indent_size | number | 参数为数字,用来定义每次缩进时,要缩进的列数,若是为indent_space设置为space,则每次缩进整数个空格,若是设置为tab,则每一个tab为整数列,在这若是tab_width属性被设置了,则每次缩进为 indent_size * tab_width列 |
end_of_line | string | 设置为‘lf’,‘cr’,‘crlf’来规定若是要换行,换行符如何生成 |
charset | string | 设置字符集:latin1, utf-8, utf-8-bom, utf-16be or utf-16le |
trim_trailing_whitespace | boolean | 设为true时,则在新建空行的时候,移除全部的空格字符 |
insert_final_newline | boolean | 设为true时,会确保文件在保存的时候,底部老是以一个新行结尾 |
root | boolean | 特殊的属性,必须在配置文件的顶部,在全部的section以外首先设置,设置为true 的时候将结束EditorConfig对配置文件的向上查找 |
全部的属性都是大小写不敏感的。当他们被插件识别的时候,统一转为小写。一般,若是一个属性没有被设置,编辑器将使用自身的默认设置,换句话说就是,若是有属性没被设置,EditorConfig也不会应用本身的默认设置,只有明确设置了属性,这部分规范才会应用到编辑器。
能够接受而且鼓励某些属性不被设置。例如:tab_width属性就不须要设置,除非该属性和indent_size不一样。还有,当index_style被设置为tab时,最好就不要设置indent_size了,以便程序员能够试用他们喜欢的缩进距离来阅读代码。此外,若是某个属性在你的工程里面是不合乎标准的(例如:end_of_line),最好就不要设置这样的属性了。
对于全部的属性来说,若是属性值被设置为:unset,就意味着移除该属性对编辑器的做用,即便该属性以前已经被设置过了。
一下列出的编辑器已经原生支持EditorConfig,不须要额外安装插件。
- BBEdit
- github
- intellij IDEA
- pycharm
- RubyMine
- VisualStudio
- webstorm