前端综合能力系列之EditorConfig

Author:宇宙第一帅
Date: 2017-12-20

什么是EditorConfig

EditorConfig 帮助开发人员定义和维护跨编辑器(或IDE)的统一的代码风格.

EditorConfig项目由一个定义编码风格的文件和许多文本编辑器插件(使得编辑器能够识别配置文件并在编码的时候应用配置的规范)组成;

EditorConfig配置文件是易读的,并且和版本控制工具兼容;

一个EditorConfig配置文件看起来是什么样子的

示例文件

下面是一个示例的 .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的示例

配置文件放置位置

当你打开一个文档即将coding的时候,EditorConfig插件就查找当前被编辑文件所在的目录有么有一个名为 .editorconfig 的文件, 如果没有,则开始依次逐级向上查找当前目录的父目录,直到到达工程根目录,或者找到配置了root=true的配置文件。

如果一个工程中出现多个配置文件,EditorConfig配置文件的读取层级是自上而下的(类似于css规则),最深层的配置文件,最后读取。配置规则也是 按照读取的顺序来生效,所以路径上离代码最近的配置规则,优先级最高。

配置格式详解

EditorConfig文件使用INI格式,同时兼容Python ConfigParser Library使用的格式,并且左右中括号[]在模块(section)名称中允许使用 section名称是路径的globs,类似于gitignore的格式。 只有正斜杠(/)被允许作为路径的分隔符,可以试用 # 或者 ;来做注释,注释不可以跨行。EditorConfig文件使用utf-8来编码, 使用CRLF或者LF来作为行分隔符;

路径的匹配模式和当前支持的EditorConfig属性,解释如下:

通配符模式

通配符作用
*匹配任意数量string类型的字符,' / ' 除外
**匹配任意数量string类型的字符
匹配任意单个字符
[a-z]匹配方括号规定范围内的任意单个字符
[!a-z]匹配不在方括号规定范围内的任意单个字符
{s1,s2,s3}匹配任意一个大括号内部美剧的字符(','分隔)
{num1..num2}匹配num1和num2之间的任意一个整数,num1和num2正负都可以

支持的属性

注意:并不是所有的属性都被没一个插件支持。想要查看完整的属性列表,移步这里

属性名类型作用注解
ident_stylestring设置为‘tab’或者‘space’,分别告知编辑器强制使用tab键或者使用智能的tab(将tab转为space)
indent_sizenumber参数为数字,用来定义每次缩进时,要缩进的列数,如果为indent_space设置为space,则每次缩进整数个空格,如果设置为tab,则每个tab为整数列,在这如果tab_width属性被设置了,则每次缩进为 indent_size * tab_width列
end_of_linestring设置为‘lf’,‘cr’,‘crlf’来规定如果要换行,换行符如何生成
charsetstring设置字符集:latin1, utf-8, utf-8-bom, utf-16be or utf-16le
trim_trailing_whitespaceboolean设为true时,则在新建空行的时候,移除所有的空格字符
insert_final_newlineboolean设为true时,会确保文件在保存的时候,底部总是以一个新行结尾
rootboolean特殊的属性,必须在配置文件的顶部,在所有的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

需要下载插件的常用编辑器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值