【譯】EditorConfig介紹

前言

EditorConfig是一套用於統一代碼工具的解決方案,很多項目都有用到,比如BootstrapjQueryUnderscoreRuby等等。官方網站說的很簡明,爲了方便大家快速上手,我做了簡單的翻譯。

EditorConfig是什麼?

EditorConfig可以幫助開發者在不同的編輯器和IDE之間定義和維護一致的代碼風格。EditorConfig包含一個用於定義代碼格式的文件和一批編輯器插件,這些插件可以讓編輯器讀取配置文件並依此格式化代碼。EditorConfig的配置文件十分易讀,並且可以很好的在VCS(Version Control System)下工作。

EditorConfig的配置文件是怎樣的?

以下是一個用於設置PythonJavaScript行尾和縮進風格的配置文件。

# EditorConfig is awesome: http://EditorConfig.org

# 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)
[*.js]
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

這裏是一些使用了EditorConfig的示例項目

在哪裏存放配置文件

當打開一個文件時,EditorConfig插件會在打開文件的目錄和其每一級父目錄查找.editorconfig文件,直到有一個配置文件root=true

EditorConfig配置文件從上往下讀取,並且路徑最近的文件最後被讀取。匹配的配置屬性按照屬性應用在代碼上,所以最接近代碼文件的屬性優先級最高。

Windows 用戶:在資源管理器創建.editorconfig文件,可以先創建.editorconfig.文件,系統會自動重名爲.editorconfig

文件格式詳情

EditorConfig文件使用INI格式(譯註:請參考維基百科),目的是可以與Python ConfigParser Library兼容,但是允許在分段名(譯註:原文是section names)中使用“and”。分段名是全局的文件路徑,格式類似於gitignore。斜槓(/)作爲路徑分隔符,#或者;作爲註釋。註釋應該單獨佔一行。EditorConfig文件使用UTF-8格式、CRLFLF作爲換行符。

通配符

通配符 說明
* 匹配除/之外的任意字符串
** 匹配任意字符串
? 匹配任意單個字符
[name] 匹配name字符
[!name] 匹配非name字符
{s1,s3,s3} 匹配任意給定的字符串(0.11.0起支持)

特殊字符可以用\轉義,以使其不被認爲是通配符。

支持的屬性

注意:不是每種插件都支持所有的屬性,具體可見Wiki

  • indent_styletab爲hard-tabs,space爲soft-tabs。
  • indent_size:設置整數表示規定每級縮進的列數和soft-tabs的寬度(譯註:空格數)。如果設定爲tab,則會使用tab_width的值(如果已指定)。
  • tab_width:設置整數用於指定替代tab的列數。默認值就是indent_size的值,一般無需指定。
  • end_of_line:定義換行符,支持lfcrcrlf
  • charset:編碼格式,支持latin1utf-8utf-8-bomutf-16beutf-16le,不建議使用uft-8-bom
  • trim_trailing_whitespace:設爲true表示會除去換行行首的任意空白字符,false反之。
  • insert_final_newline:設爲true表明使文件以一個空白行結尾,false反之。
  • root:表明是最頂層的配置文件,發現設爲true時,纔會停止查找.editorconfig文件。

目前所有的屬性名和屬性值都是大小寫不敏感的。編譯時都會將其轉爲小寫。通常,如果沒有明確指定某個屬性,則會使用編輯器的配置,而EditorConfig不會處理。

推薦不要指定某些EditorConfig屬性。比如,tab_width不需要特別指定,除非它與indent_size不同。同樣的,當indent_style設爲tab時,不需要配置indent_size,這樣才方便閱讀者使用他們習慣的縮進格式。另外,如果某些屬性並沒有規範化(比如end_of_line),就最好不要設置它。

下載插件

Sublime Text

直接在Package Control裏搜EditorConfig就行,在Console裏可以看到生效的配置。

WebStorm

在Setting–>Plugins–>Browse JetBrains Plugins裏搜索EditorConfig即可。
IntellijIDEAPhpStormPyCharm等應該類似。

注:從9.X版本開始,WebStorm原生就內置了EditorConfig,不需要裝任何插件。

譯註:支持的編輯器/IDE很多,使用也都很簡單,大家自己去官網下吧。

做點貢獻

Feedback

聯繫方式:

編寫插件

可以用任何一種核心庫來編寫EditorConfig插件。核心庫以正在編輯的文件作爲輸入,尋找/編譯相關的.editorconfig文件,並回傳需要用到的屬性。考慮到未來的兼容性(可以添加新的屬性名和屬性值),請在你的插件裏忽略未識別的屬性名和屬性值。目前有供C、Python和Java語言使用的庫。(還有一個Java和Python綁定的庫,這個只是用來存檔的,目前已廢棄。)

如果你計劃編寫一個新插件,請用郵件羣組通知我們,這樣我們可以幫忙併添加鏈接。如果你計劃用任意一個核心作爲庫或者命令行接口,C、Python或者Java庫的文檔可能會幫上忙。

更多信息請看WIKI

後言

可以看到,EditorConfig目前支持的屬性非常少,且只侷限於基本的文件縮進、換行等格式(當然這與其定位有關),雖然並不能滿足團隊裏代碼規範統一的要求,但是其簡單易上手、跨編輯器且靜默生效的特點,建議在項目中使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章