TAT.yunsheng 【译】EditorConfig介绍
In Web开发,资源工具 on 2014年12月14日 by view: 16,771
0

前言

EditorConfig是一套用于统一代码格式的解决方案,很多项目都有用到,比如BootstrapjQueryUnderscoreRuby等等。官方网站说的很简明,为了方便大家快速上手,我做了简单的翻译。

EditorConfig是什么?

EditorConfig可以帮助开发者在不同的编辑器和IDE之间定义和维护一致的代码风格。EditorConfig包含一个用于定义代码格式的文件和一批编辑器插件,这些插件可以让编辑器读取配置文件并依此格式化代码。EditorConfig的配置文件十分易读,并且可以很好的在VCS(Version Control System)下工作。

EditorConfig的配置文件是怎样的?

以下是一个用于设置PythonJavaScript行尾和缩进风格的配置文件。

这里是一些使用了EditorConfig的示例项目

在哪里存放配置文件

当打开一个文件时,EditorConfig插件会在打开文件的目录和其每一级父目录查找.editorconfig文件,直到有一个配置文件root=true

EditorConfig配置文件从上往下读取,并且路径最近的文件最后被读取。匹配的配置属性按照属性应用在代码上,所以最接近代码文件的属性优先级最高。

Windows 用户:在资源管理器创建.editorconfig文件,可以先创建.editorconfig.文件,系统会自动重名为.editorconfig

文件格式详情

EditorConfig文件使用INI格式(译注:请参考维基百科),目的是可以与Python ConfigParser Library兼容,但是允许在分段名(译注:原文是section names)中使用“and”。分段名是全局的文件路径,格式类似于gitignore。斜杠(/)作为路径分隔符,#或者;作为注释。注释应该单独占一行。EditorConfig文件使用UTF-8格式、CRLFLF作为换行符。

通配符

通配符 说明
* 匹配除/之外的任意字符串
** 匹配任意字符串
? 匹配任意单个字符
[name] 匹配name字符
[!name] 匹配非name字符
{s1,s3,s3} 匹配任意给定的字符串(0.11.0起支持)

特殊字符可以用\转义,以使其不被认为是通配符。

支持的属性

注意:不是每种插件都支持所有的属性,具体可见Wiki

  • indent_styletab为hard-tabs,space为soft-tabs。
  • indent_size:设置整数表示规定每级缩进的列数和soft-tabs的宽度(译注:空格数)。如果设定为tab,则会使用tab_width的值(如果已指定)。
  • tab_width:设置整数用于指定替代tab的列数。默认值就是indent_size的值,一般无需指定。
  • end_of_line:定义换行符,支持lfcrcrlf
  • charset:编码格式,支持latin1utf-8utf-8-bomutf-16beutf-16le,不建议使用uft-8-bom
  • trim_trailing_whitespace:设为true表示会除去换行行首的任意空白字符,false反之。
  • insert_final_newline:设为true表明使文件以一个空白行结尾,false反之。
  • root:表明是最顶层的配置文件,发现设为true时,才会停止查找.editorconfig文件。

目前所有的属性名和属性值都是大小写不敏感的。编译时都会将其转为小写。通常,如果没有明确指定某个属性,则会使用编辑器的配置,而EditorConfig不会处理。

推荐不要指定某些EditorConfig属性。比如,tab_width不需要特别指定,除非它与indent_size不同。同样的,当indent_style设为tab时,不需要配置indent_size,这样才方便阅读者使用他们习惯的缩进格式。另外,如果某些属性并没有规范化(比如end_of_line),就最好不要设置它。

下载插件

Sublime Text

直接在Package Control里搜EditorConfig就行,在Console里可以看到生效的配置。

WebStorm

在Setting–>Plugins–>Browse JetBrains Plugins里搜索EditorConfig即可。
IntellijIDEAPhpStormPyCharm等应该类似。

注:从9.X版本开始,WebStorm原生就内置了EditorConfig,不需要装任何插件。

译注:支持的编辑器/IDE很多,使用也都很简单,大家自己去官网下吧。

做点贡献

Feedback

联系方式:

编写插件

可以用任何一种核心库来编写EditorConfig插件。核心库以正在编辑的文件作为输入,寻找/编译相关的.editorconfig文件,并回传需要用到的属性。考虑到未来的兼容性(可以添加新的属性名和属性值),请在你的插件里忽略未识别的属性名和属性值。目前有供C、Python和Java语言使用的库。(还有一个Java和Python绑定的库,这个只是用来存档的,目前已废弃。)

如果你计划编写一个新插件,请用邮件群组通知我们,这样我们可以帮忙并添加链接。如果你计划用任意一个核心作为库或者命令行接口,C、Python或者Java库的文档可能会帮上忙。

更多信息请看WIKI

后言

可以看到,EditorConfig目前支持的属性非常少,且只局限于基本的文件缩进、换行等格式(当然这与其定位有关),虽然并不能满足团队里代码规范统一的要求,但是其简单易上手、跨编辑器且静默生效的特点,建议在项目中使用。

原创文章转载请注明:

转载自AlloyTeam:http://www.alloyteam.com/2014/12/editor-config/

发表评论