不同的編輯器預設的輸入方式都不盡相同,因此同個專案的同個檔案使用不同的編輯器修改,可能會因為輸入的格式不同,而使整體的格式不一致,造成閱讀與管理上的困難。
一般的解決方式是直接修改編輯器內輸入的相關設定,使其匹配專案的設定,但是每個編輯器的設定方式不同,同個效果的配置屬性也可能不同,難以確保設定後的一致性。
EditorConfig 是由專案中的配置文件與各式編輯器的插件所組成的,藉由使用的編輯器插件讀取配置文件,從而將編輯器的設定修改為與 EditorConfig 的配置一致。
EditorConfig 使用的配置文件在不同的編輯器中都是相同的設定方式,使用這個所有編輯器共用的配置做設定,搭配編輯器中 EditorConfig 的插件做解析並轉為各個編輯器原生的設定,使輸入方式在不同的編輯器之間達成一致。
要使用 EditorConfig ,有兩點需要學習:
EditorConfig 使用名為 .editorconfig
的檔案作為配置文件,下面是個 .editorconfig
的範例:
# EditorConfig is awesome: https://EditorConfig.org
# top-most EditorConfig file
root = true
# Matches all files
[*]
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
# Matches all Markdown files
[*.md]
trim_trailing_whitespace = false
.editorconfig
採用 INI 檔案格式編寫,以 name = value
配置各個設定, name
為設定屬性, value
為設定值,設定會被 []
隔為一個個的 section , section 名稱(例如: *.md
)是以 globs 設定(區分大小寫)的檔案路徑(類似 gitignore 的設定方式), section 內(從 []
行到下個 []
行或是檔案結尾)的所有設定都會作用在與 section 名稱相符的檔案上。
使用者依照專案的習慣將各種檔案的設定(設定屬性可以在 EditorConfig Wiki 中檢索)配置於 .editorconfig
中。
在使用者開啟專案中的任一檔案時,編輯器的插件會從當前目錄開始往上層搜索 .editorconfig
配置檔,直到 root 目錄或是取得的 .editorconfig
中設定 root = true
為止。
可以在專案中配置多個 .editorconfig
, EditorConfig 會將搜索過程中的配置合併,離開啟檔案越進優先權越大,而配置檔內的設定由上而下,越下面的 section 優先權越大。
可以參考實際專案的配置方式。
EditorConfig 依照編輯器的支援種類,分為原生支援與依靠插件支援的兩類:
由於 Visual Studio Code 原生並不支援 EditorConfig ,因此需要另外安裝插件 EditorConfig for VS Code ,安裝完成後就可以直接設定 .editorconfig
開始使用。
VS Code 的 EditorConfig 目前支援下列屬性:
indent_style
indent_size
tab_width
end_of_line
(on save)insert_final_newline
(on save)trim_trailing_whitespace
(on save)只要依照 EditorConfig 規定的設定相關的配置屬性,就可以給每個人的編輯器帶來相同的輸入配置。
為了讓專案的其他使用者可以順利的安裝插件,我們可以將插件加入推薦清單中。
在插件的介紹頁上按下設定的齒輪,並且選擇 Add to Workspace Recommendations ,就可以將其加入清單。
或者也可以直接開啟 .vscode/extensions.json
進行編輯:
{
"recommendations": ["editorconfig.editorconfig"]
}
.editorconfig
,並在編輯器中安裝插件來執行相關的配置修改。