前端综合能力系列之EditorConfig

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

什么是EditorConfig

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

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

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

一个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的示例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

须要下载插件的经常使用编辑器

相关文章
相关标签/搜索