前端綜合能力系列之EditorConfig

Author:宇宙第一帥
Date: 2017-12-20php

什麼是EditorConfig

EditorConfig 幫助開發人員定義和維護跨編輯器(或IDE)的統一的代碼風格.css

EditorConfig項目由一個定義編碼風格的文件和許多文本編輯器插件(使得編輯器可以識別配置文件並在編碼的時候應用配置的規範)組成;python

EditorConfig配置文件是易讀的,而且和版本控制工具兼容;git

一個EditorConfig配置文件看起來是什麼樣子的

示例文件

下面是一個示例的 .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

須要下載插件的經常使用編輯器

相關文章
相關標籤/搜索