本文作者: jsweibo
本文链接: https://jsweibo.github.io/2019/07/19/%E4%BB%80%E4%B9%88%E6%98%AFEditorConfig/
摘要
本文主要讲述了:
- 什么是 EditorConfig
- 运行时间
- 配置
正文
什么是 EditorConfig
每个开发者都有自己的代码风格。例如:
- 用
tab
缩进而不用space
- 每个
tab
缩进4
列 - 使用新行作为文件的结束
当多个开发者共同维护同一个项目时,保持代码风格统一是非常重要的。
EditorConfig 是一个用于维护代码风格的跨编辑器的插件。
运行时间
用户保存文件时
配置
文件名
.editorconfig
编码
UTF-8
配置文件查询
每当打开文件时,插件会从文件所在目录开始并逐级向上寻找.editorconfig
。
直到某个配置文件的root
属性为true
或已经到达根目录时,才会停止。
层叠配置优先级
当上级目录也存在配置文件且 CWD 的配置文件的root
属性不为true
时,插件会对多个配置文件进行层叠。
和被打开文件距离越短的配置文件的优先级越高,当多个配置文件冲突时,以优先级高的为准。
示例:
当打开learn_editorconfig/src/index.js
时,learn_editorconfig/src/.editorconfig
的优先级比learn_editorconfig/.editorconfig
要高。
1 | ; learn_editorconfig/src/.editorconfig |
1 | ; learn_editorconfig/.editorconfig |
此时,最终有效的.editorconfig
为:
1 | root = true |
语法
.editorconfig
使用ini
语法。但允许在章节名中使用[
和]
。
行注释
示例:
1 | # 我是行注释 |
路径段分隔符
/
,注意不是\
通配符
*
匹配字符串中的所有字符,除了/
**
匹配字符串中的所有字符,包括/
?
匹配字符串中的一个字符[name]
匹配集合中的一个字符,例如:[a-z]
匹配任意一个小写的英文字母[!name]
不匹配集合中的一个字符,例如:[!a-z]
不匹配任意一个小写的英文字母{s1,s2,s3}
匹配给定的任意一个字符(由逗号分隔),例如:a{1,2,3}b
匹配a1b
、a2b
、a3b
{num1..num2}
匹配整数 num1 -> 整数 num2 的闭区间,例如:{0..9}
相当于[0-9]
以上的特殊字符可以使用\
进行转义,这样它们就不会被视作通配符。
注意:
- 若 pattern 为
*
,匹配工作是在目标文件所在目录进行的,而非.editorconfig
文件所在目录 - 若 pattern 包含
/
,匹配工作在.editorconfig
文件所在目录进行的
示例:
/home/jsweibo/learn_editorconfig/.editorconfig
1 | root = true |
-
/home/jsweibo/learn_editorconfig/*.js
-
/home/jsweibo/learn_editorconfig/src/*.js
-
/home/jsweibo/learn_editorconfig/src/foo/*.js
-
/home/jsweibo/learn_editorconfig/public/*.js
-
/home/jsweibo/learn_editorconfig/public/src/*.js
-
/home/jsweibo/learn_editorconfig/public/src/foo/*.js
示例:
/home/jsweibo/learn_editorconfig/.editorconfig
1 | root = true |
-
/home/jsweibo/learn_editorconfig/*.js
-
/home/jsweibo/learn_editorconfig/src/*.js
-
/home/jsweibo/learn_editorconfig/src/foo/*.js
-
/home/jsweibo/learn_editorconfig/public/*.js
-
/home/jsweibo/learn_editorconfig/public/src/*.js
-
/home/jsweibo/learn_editorconfig/public/src/foo/*.js
示例:
/home/jsweibo/learn_editorconfig/.editorconfig
1 | root = true |
-
/home/jsweibo/learn_editorconfig/*.js
-
/home/jsweibo/learn_editorconfig/src/*.js
-
/home/jsweibo/learn_editorconfig/src/foo/*.js
-
/home/jsweibo/learn_editorconfig/public/*.js
-
/home/jsweibo/learn_editorconfig/public/src/*.js
-
/home/jsweibo/learn_editorconfig/public/src/foo/*.js
示例:
/home/jsweibo/learn_editorconfig/.editorconfig
1 | root = true |
-
/home/jsweibo/learn_editorconfig/*.js
-
/home/jsweibo/learn_editorconfig/src/*.js
-
/home/jsweibo/learn_editorconfig/src/foo/*.js
-
/home/jsweibo/learn_editorconfig/public/*.js
-
/home/jsweibo/learn_editorconfig/public/src/*.js
-
/home/jsweibo/learn_editorconfig/public/src/foo/*.js
属性
root
停止继续向上寻找.editorconfig
文件
end_of_line
行尾符
insert_final_newline
以空行作为文件的结尾
indent_style
缩进风格
indent_size
缩进大小
tab_width
tab 宽度
trim_trailing_whitespace
去除尾部的空白字符
参考资料
本文作者: jsweibo
本文链接: https://jsweibo.github.io/2019/07/19/%E4%BB%80%E4%B9%88%E6%98%AFEditorConfig/
本文对你有帮助?请支持我
- 本文链接: https://jsweibo.github.io/2019/07/19/%E4%BB%80%E4%B9%88%E6%98%AFEditorConfig/
- 版权声明: 除非另有说明,否则本网站上的内容根据署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。