editconfig介绍
情景
你是否遇到,修改他人代码时,缩进乱七八糟,各种中文乱码,其实别人的代码在他自己编辑时,一般是好的,为什么到了你这就乱了,这就是编码格式,缩进方式在搞怪了,于是,editconfig可以登场了。
格式
新增一个 .editconfig文件,文件内容大概如下
# 部分编辑器自带editorconfig插件,部分需要自行安装
root =true
# 匹配全部文件, 并执行下列规则
[*]
# 设置字符集
charset =utf-8
# 缩进类型 space 或者tab
indent_style =space
# 缩进的空格数
indent_size =2
# 结尾换行符,可选"lf"、"cr"、"crlf"
end_of_line =lf
# 在文件结尾插入新行,为什么插入新行参见下面的链接
# http://beiyuu.com/carriage-return-line-feed-new-line-end-file
insert_final_newline =true
# 删除一行中的前后空格
trim_trailing_whitespace =true
编码格式
中文乱码,出现情况不是很多,如果是utf-8编码的文件,打开文件时强制以gbk解码的方式打开,就会出现中文乱码,抛出一个问题:编辑器是怎么识别文件编码格式,并自动启用相应解码方式打开文件的
缩进类型
这个问题出现的就比较多了,如果没有统一编码格式,有些人缩进用tab,一个tab两个空格,而另一个人打开对应的文件,但是编码器默认的tab是4个空格,这种情况还好,只是缩进变大了,最怕的是有些人tab,空格混用,而到了另一个人那,因为tab默认缩进不一样,导致整个缩进一团糟。
不同的编辑器对tab产生的制表符的缩进间距表现不一,有的视觉上显示为4个空格,有的显示为8个空格,如果设置为space,使用tab键缩进后编辑器会自动生成indent_size个空格,不会产生制表符
换行符
'\r'是回车,前者使光标到行首,(carriage return)CR
'\n'是换行,后者使光标下移一格,(line feed) LF
windows下的文件一般以 '\r\n'即CRLF字符放在行尾作为换行符,而unix系统使用 '\n'即LF,Mac系统使用 '\r'即CR,因此如果文件是以LF作为换行符,用windows记事本打开文件,则会显示在一行,因为记事本默认只能识别CRLF格式的换行符,而如果文件以CRLF作为换行符,到了Unix系统下,有可能行尾会多了^M字符,因为Unix识别 '\n'为换行符,有些版本的Unix不是吧 '\r',就会显示为 '^M'
最后
对于charset,一般编辑器默认设置都是utf-8,editconfig好像最有用的还是设置tab为space,并设置indent_size。但是就是设置了缩进方式,还是阻止不了有些人tab和空格混用啊,对于前端领域,最后就由eslint把关了