本文作者: 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) 进行许可。