使用Editorconfig统一各种编辑器代码风格
前言
当一个大的项目有很多人进行开发的情况下,往往需要遵守统一的编码规范,但是每个人都有自己喜欢的不同的编辑器,如sublimeText
,Vim
,Webstorm
等等,要么需要每个人都对编辑器进行设置以符合需求,要么就是使用Eslint
等代码检查工具进行验证,修改至符合要求,太过麻烦。
EditorConfig
很好地解决了这个问题。
EditorConfig
简介
EditorConfig
就是编辑器配置,它帮助开发者定义和保持一致的代码规范在不同的编辑器之间,只需使用一个文件定义代码规范和一些插件安装就能使编辑器识别并使用这个文件,这个文件很容易阅读且在不同的系统中也能工作地很好。
配置使用
- 在项目根创建一个名为
.editorconfig
的文件。该文件的内容定义该项目的编码规范 - 安装与编辑器对应的 EditorConfig 插件。
工作原理:EditorConfig
插件会去查找当前编辑文件的所在文件夹或其上级文件夹中是否有 .editorconfig 文件,直到找到项目根目录或者找到root=true
的那个editorconfig
的文件。如果有,则编辑器的行为会与 .editorconfig
文件中定义的一致,且距离越近的editorconfig
文件的优先级会越高,并且覆盖编辑器自身的设置。
一个简单的editorconfig
文件实例:
# 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
格式
EditorConfig文件使用INI格式。斜杠(/
)作为路径分隔符,#或者;作为注释。路径支持通配符:
通配符 | 说明 |
---|---|
* |
匹配除/之外的任意字符 |
** |
匹配任意字符串 |
? |
匹配任意单个字符 |
[name ] |
匹配name 字符 |
[!name ] |
不匹配name 字符 |
[s1 ,s2 ,s3 ] |
匹配给定的字符串 |
[num1 ..num2 ] |
匹配num1 到mun2 直接的整数 |
属性
EditorConfig支持以下属性:
属性 | 说明 |
---|---|
indent_style |
缩进使用tab 或者space |
indent_size |
缩进为space 时,缩进的字符数 |
tab_width |
缩进为tab 时,缩进的宽度 |
end_of_line |
换行符的类型。lf , cr , crlf 三种 |
charset |
文件的charset。有以下几种类型:latin1 , utf-8 , utf-8-bom , utf-16be , utf-16le |
trim_trailing_whitespace |
是否将行尾空格自动删除 |
insert_final_newline |
是否使文件以一个空白行结尾 |
root |
表明是最顶层的配置文件,发现设为true时,才会停止查找.editorconfig 文件 |
- 所有的属性都对大小写不敏感
- 如果没有设置这个属性将会使用编辑器默认的属性
- 如果将这个属性设置为
unset
将会覆盖之前设置的值,从而使用编辑器默认的属性
编辑器插件
如下这些编辑器不需要安装插件都支持editorconfig
: