Author:宇宙第一帥
Date: 2017-12-20php
EditorConfig 幫助開發人員定義和維護跨編輯器(或IDE)的統一的代碼風格.css
EditorConfig項目由一個定義編碼風格的文件和許多文本編輯器插件(使得編輯器可以識別配置文件並在編碼的時候應用配置的規範)組成;python
EditorConfig配置文件是易讀的,而且和版本控制工具兼容;git
下面是一個示例的 .editorConfig配置文件,該文件配置了 python和js的末行和縮進的規則程序員
# 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
複製代碼
查看wiki,獲取 真實項目使用EditorConfig的示例github
當你打開一個文檔即將coding的時候,EditorConfig插件就查找當前被編輯文件所在的目錄有麼有一個名爲 .editorconfig 的文件, 若是沒有,則開始依次逐級向上查找當前目錄的父目錄,直到到達工程根目錄,或者找到配置了root=true
的配置文件。web
若是一個工程中出現多個配置文件,EditorConfig配置文件的讀取層級是自上而下的(相似於css規則),最深層的配置文件,最後讀取。配置規則也是 按照讀取的順序來生效,因此路徑上離代碼最近的配置規則,優先級最高。json
EditorConfig文件使用INI格式,同時兼容Python ConfigParser Library使用的格式,而且左右中括號[]在模塊(section)名稱中容許使用 section名稱是路徑的globs,相似於gitignore的格式。 只有正斜槓(/)被容許做爲路徑的分隔符,能夠試用 # 或者 ;來作註釋,註釋不能夠跨行。EditorConfig文件使用utf-8來編碼, 使用CRLF或者LF來做爲行分隔符;xcode
路徑的匹配模式和當前支持的EditorConfig屬性,解釋以下:bash
通配符 | 做用 |
---|---|
* | 匹配任意數量string類型的字符,' / ' 除外 |
** | 匹配任意數量string類型的字符 |
? | 匹配任意單個字符 |
[a-z] | 匹配方括號規定範圍內的任意單個字符 |
[!a-z] | 匹配不在方括號規定範圍內的任意單個字符 |
{s1,s2,s3} | 匹配任意一個大括號內部美劇的字符(','分隔) |
{num1..num2} | 匹配num1和num2之間的任意一個整數,num1和num2正負均可以 |
注意:並非全部的屬性都被沒一個插件支持。想要查看完整的屬性列表,移步這裏
屬性名 | 類型 | 做用註解 |
---|---|---|
ident_style | string | 設置爲‘tab’或者‘space’,分別告知編輯器強制使用tab鍵或者使用智能的tab(將tab轉爲space) |
indent_size | number | 參數爲數字,用來定義每次縮進時,要縮進的列數,若是爲indent_space設置爲space,則每次縮進整數個空格,若是設置爲tab,則每一個tab爲整數列,在這若是tab_width屬性被設置了,則每次縮進爲 indent_size * tab_width列 |
end_of_line | string | 設置爲‘lf’,‘cr’,‘crlf’來規定若是要換行,換行符如何生成 |
charset | string | 設置字符集:latin1, utf-8, utf-8-bom, utf-16be or utf-16le |
trim_trailing_whitespace | boolean | 設爲true時,則在新建空行的時候,移除全部的空格字符 |
insert_final_newline | boolean | 設爲true時,會確保文件在保存的時候,底部老是以一個新行結尾 |
root | boolean | 特殊的屬性,必須在配置文件的頂部,在全部的section以外首先設置,設置爲true 的時候將結束EditorConfig對配置文件的向上查找 |
全部的屬性都是大小寫不敏感的。當他們被插件識別的時候,統一轉爲小寫。一般,若是一個屬性沒有被設置,編輯器將使用自身的默認設置,換句話說就是,若是有屬性沒被設置,EditorConfig也不會應用本身的默認設置,只有明確設置了屬性,這部分規範纔會應用到編輯器。
能夠接受而且鼓勵某些屬性不被設置。例如:tab_width屬性就不須要設置,除非該屬性和indent_size不一樣。還有,當index_style被設置爲tab時,最好就不要設置indent_size了,以便程序員能夠試用他們喜歡的縮進距離來閱讀代碼。此外,若是某個屬性在你的工程裏面是不合乎標準的(例如:end_of_line),最好就不要設置這樣的屬性了。
對於全部的屬性來說,若是屬性值被設置爲:unset,就意味着移除該屬性對編輯器的做用,即便該屬性以前已經被設置過了。
一下列出的編輯器已經原生支持EditorConfig,不須要額外安裝插件。
- BBEdit
- github
- intellij IDEA
- pycharm
- RubyMine
- VisualStudio
- webstorm