editorconfig (https://editorconfig.org) 定义一个代码格式配置文件覆盖IDE/编辑器上的代码规则。可以实现多人跨编辑器和IDE开发同一个项目时保持一致的编码风格。安排上EditorConfig后我们再也不用为tabWidth
到底是2还是4好伤脑筋啦~
使用非常简单,先去插件市场搜索安装(以VSCode为例,其余):
再到自己项目根目录下新建一个.editorconfig
,即用来定义 用户/项目 编码格式的文件。上面安装的EditorConfig插件(上面的EditorConfig for VS Code)使我们的编辑器可以读取.editorconfig
并遵循定义的规则。
官方示例配置如下:
# EditorConfig is awesome: https://EditorConfig.org
# 当前目录最顶层的配置文件
root = true
# 设置所有的文件
# 始终在文件末尾插入一个 lf 换行符
[*]
end_of_line = lf
insert_final_newline = true
# 设置所有js/py格式的文件
# 文件字符集为utf-8
[*.{js,py}]
charset = utf-8
# 设置py类型的文件
# 缩进类型为space/软缩进,缩进字符列数为4
[*.py]
indent_style = space
indent_size = 4
# 设置Makefile文件
# 缩进类型为tab缩进(未指定大小)
[Makefile]
indent_style = tab
# 设置在lib目录下所有的JS
# 缩进类型为space/软缩进,缩进字符列数为2
[lib/**.js]
indent_style = space
indent_size = 2
# 设置确切文件 package.json/ 或 .travis/.yml
[{package.json,.travis.yml}]
indent_style = space
indent_size = 2
root: 特殊属性。可以决定这个. editorconfig
的代码规范是覆盖用户还是当前项目工作区。只允许在.editorconfig
最顶部指定。如果没有指定root = true
, EditorConfig 将继续在该项目外部寻找. editorconfig
,直到找到一个有root = true
的.editorconfig
文件为止。
如果有多个. editorconfig
,并且设置了相同的定义(文件名选择器和属性都一致),会以较近项目的. editorconfig
中的属性值优先。
对于VSCode,支持的属性还有以下几个:
-
indent_style:
[tab|space]
缩进方式 -
indent_size:
[整数]
缩进列数,定义每个tab的宽度;当设置为'tab'时,将使用tab_width
的值(如果定义了)。 -
tab_width:
[整数]
用于定义一个tab符的列数。默认值为indent_size
的值,通常不需要指定。 -
end_of_line (on save):
[lf|cr|crlf]
换行符 -
insert_final_newline (on save):
[true|false]
若为 true 文件在保存时会以换行符结尾,false 则不以换行符结束 -
trim_trailing_whitespace (on save):
[true|false]
若为 true 会删除换行符之前的所有空白字符。
匹配通配符
用于匹配文件名的[]
(类似选择器)中用来识别匹配的特殊字符
-
*
:匹配任意字符串,路径分隔符(/)
除外 -
**
:匹配任意字符串 -
?
:匹配任意单个字符 -
[name]
: 匹配name中的任意单个字符 -
[!name]
: 匹配除name以外的任意单个字符 -
{s1,s2,s3}
:匹配给定的任意一个字符串(以逗号分隔)(从EditorConfig Core 0.11.0开始可用) -
{num1..num2}
: 匹配num1和num2之间的任何整数,num1和num2可以是正数或负数
最后放一个我项目的常用配置
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
insert_final_newline = false
trim_trailing_whitespace = false