【說明】本系列博文是依據 Emmet 官方文檔翻譯的,原文地址爲:http://docs.emmet.io/,部份內容已經在博主以前的博文中節選過,爲方便已經收藏過以前博文的朋友,沒有刪除這些博文,僅將其完整的收錄於本系列中。css
Emmet 提供了大範圍的微調,以使你能夠用之提高本身的插件體驗。幾乎全部的正式開發的編輯器插件 (除了 PSPad 和基於瀏覽器的) 都有 擴展支持: 一個用於擴展 Emmet能夠放置 json
和 js
文件的文件夾。請參考隨編輯器插件發佈的 README 文件,找出 Emmet 在哪兒搜索擴展。html
擴展文件夾中的每一個 .js
文件都在插件啓動時被載入和執行。使用 js
文件創建本身的 過濾器 或 動做:可使用 Emmet 模塊並使用 JavaScript 縮寫腳本與編輯器。
node
使用 .json
文件可以微調 Emmet 工具的不一樣部分:git
在擴展文件夾內建立 snippets.json
文件來添加或者覆蓋片斷。此文件的結構與 原始文件 相同:在最頂級定義片斷所屬的 語法名稱 ,第二級有下面幾段:github
abbreviations
或 snippets
包含 不一樣類型 的片斷定義。filters
包含用逗號間隔的當前語法的默認 過濾器 列表。若是沒有定義本屬性,則默認使用 html
過濾器。extends
: 當前語法所繼承的片斷定義的語法名稱。例如,sass
語法繼承自 css
,不過能夠爲這個語法定義創建本身的或者覆蓋一些 SASS 特定的片斷。走入完成後,用戶的 snippets.json
與原始文件遞歸合併,添加或升級縮寫和片斷。web
在語法定義的 snippets
一節,能夠建立普通的文本片斷,你編輯裏的同樣漂亮。能夠在片斷中使用 tabstops ,當縮寫展開時可使用 Tab 鍵在它們之間跳轉(前提是所用的編輯器支持 tabstops)。Emmet 採用 TextMate 編輯器的 tabstops 格式:正則表達式
$1
或 ${1}
${1:hello world}
— 帶有佔位符的 tabstop注意 ${0}
或 $0
tabstop 在相似於 TexeMate 或 Eclipse 等一些編輯器中有特殊含義:用做離開 「tabstops 模式」的最後一個光標位置,因此最好從 1 開始使用 tabstops 。編程
能夠在片斷中使用 片斷 來輸出預約義數據。例如 HTML 語法的 html:5
片斷是這樣定義的:json
<!doctype html>\n<html lang="${lang}">...</body>\n</html>
在上面的盒子中, ${lang}
用於引用定義在 snippets.json 文件的 variables
一節的 lang
變量。例如,所用的母語是俄語,能夠直接使用 ru
值覆蓋 lang
變量,並保持原始的片斷定義。c#
也可使用行內縮寫屬性覆蓋變量值: html:5[lang=ru]
。與 ID 和 CLASS 屬性縮寫—#
和 .
—一塊兒,能夠很容易的覆蓋縮寫中的變量:
"for": "for (var ${class} = 0; i < ${id}.length; ${class}++) {\n\t|}"
用法示例: for#array.i
.
片斷有一些對 Emmet 有特殊意義的預約義變量名:
${cursor}
或 |
是 $0
的罔,用做生成輸出的當前位置。${child}
引用了一個位置,子屬性和片斷將被輸出到此處。若是沒有定義,子元素將輸出到片斷內容的後邊。|
和 $
字符字符 $
做於 tabstops 和變量,字符 |
用於指示縮寫展開時的光標位置。若是想原樣輸出這些字符,必須使用雙斜槓來對它們進行轉碼: \\$
或 \\|
若是想與其它用戶共享片斷,能夠將它們放進以 snippets 命名的文件中,例如: snippets-foo.json
、snippets_bar.json
、snippetsBaz.json
。Emmet 將在啓動時載入它們,並將它們合併到單個片斷集合中。
注意,定義在 snippets.json
(譯註:此處疑是 snippets-*.json)文件中的片斷優先於定義在 `snippets.json` 文件中的片斷
preferences.json
文件用於編輯 Emmet 的一些運做和解析器的行爲。此文件包含 Key-value 對的簡單字典。
例如在 「CSS 漸變」 上,有 css.gradient.fallback
選項描述當定義展開時可以回調 background-color
。要使它生效,直接加入以下內容到 preferences.json
文件:
{ "css.gradient.fallback": true }
如下是當前可用的選項列表:
bem.elementSeparator
Class 名的元素分隔符
|
__ |
bem.modifierSeparator
Class 名的修飾符分隔符
|
_ |
bem.shortElementPrefix
描述短的 「塊元素」標記的符號。 帶有這個符號前綴的Class 類名將被視爲你塊名稱的元素名。每一個符號實例在解析樹的塊元素中向上跳轉一級。空值將禁用短標記。
|
- |
css.alignVendor
若是設置爲
true,全部生成的 vendor 前綴屬性將被賦予真實的元素名。
|
false |
css.autoInsertVendorPrefixes
在擴展 CSS 屬性時自動生成 vendor 前綴副本。默認狀況下,當縮寫前放置了存摺號 (例如,
-bxsh ),Emmet 將僅生成 vendor 前綴屬性. 該屬性可用時,不須要在縮寫前定義破折號: Emmet 爲你生成 vendor 前綴屬性。
|
true |
css.closeBraceIndentation
在 CSS 關閉括號前縮進。一些用戶爲了加強可讀性而縮進 CSS 規則的關閉括號。設置這個選項將在用戶新建規則添加新行(如在 CSS 文件中執行「插入格式化換行」動做)時自動在關閉前縮進。若是你剛好是這種用戶,也許會想在這個選項佔放一個相似於
\n\t 的值.
|
|
css.color.case
顏色縮寫(相似於
c#0)的顏色字母的大小寫。可取的值有
upper 、
lower 和
keep。
|
keep |
css.color.short
在帶有顏色的縮寫展開時,將相似於
#ffffff 的顏色值簡化成
#fff 。
|
true |
css.floatUnit
浮點值的默認單位。
|
em |
css.fuzzySearch
是否可以模糊搜索 CSS 片斷的名字。當設置爲可用時,每一個未知的片斷將被改爲接近的可用的片斷名(對 CSS 值或屬性無效)。最接近的匹配將被用於片斷解析。例如,在此選項可用時,下面的縮寫是等效的:
ov:h ==
ov-h ==
o-h ==
oh。
|
true |
css.fuzzySearchMinScore
模糊匹配時搜索的最小值(取值範圍爲從 0 到 1)。較低的設置值可以得到更多的匹配,較高的值則匹配度更高。
|
0.3 |
css.gradient.defaultProperty
當展開 CSS 值上下文外面的漸變時,它將生成帶有相同名字的屬性。
|
background-image |
css.gradient.fallback
當此選項可用時,CSS 漸變將爲舊瀏覽器生成帶有漸變第一個顏色的
background-color 屬性。
|
false |
css.gradient.oldWebkit
爲舊的 webkit 實現生成漸變定義。
|
true |
css.gradient.omitDefaultDirection
在生成的漸變中不輸出默認的方向定義。
|
true |
css.gradient.prefixes
用逗號的 vendor 前綴列表,每一個都將被生成。
|
webkit, moz, o |
css.intUnit
整數值的默認單位。
|
px |
css.keywordAliases
用逗號間隔的關鍵詞別名列表,用在 CSS 縮寫中。每一個別名的定義格式以下:
alias:keyword_name。
|
a:auto, i:inherit, s:solid, da:dashed, do:dotted, t:transparent |
css.keywords
用逗號間隔的可以用於 CSS 縮寫的有效關鍵詞列表。
|
auto, inherit |
css.mozProperties
可能用於
moz vendor 前綴的用逗號間隔的 CSS 屬性列表。這個列表用於在展開
-property 縮寫時 生成前綴屬性列表。空值意味着全部可用的 CSS 屬性都將擁有
moz 前綴。
|
animation-delay, animation-direction, animation-duration, animation-fill-mode, animation-iteration-count, animation-name, animation-play-state, animation-timing-function, appearance, backface-visibility, background-inline-policy, binding, border-bottom-colors, border-image, border-left-colors, border-right-colors, border-top-colors, box-align, box-direction, box-flex, box-ordinal-group, box-orient, box-pack, box-shadow, box-sizing, column-count, column-gap, column-rule-color, column-rule-style, column-rule-width, column-width, float-edge, font-feature-settings, font-language-override, force-broken-image-icon, hyphens, image-region, orient, outline-radius-bottomleft, outline-radius-bottomright, outline-radius-topleft, outline-radius-topright, perspective, perspective-origin, stack-sizing, tab-size, text-blink, text-decoration-color, text-decoration-line, text-decoration-style, text-size-adjust, transform, transform-origin, transform-style, transition, transition-delay, transition-duration, transition-property, transition-timing-function, user-focus, user-input, user-modify, user-select, window-shadow, background-clip, border-radius |
css.mozPropertiesAddon
用於
css.mozPreperties
選項的附加 CSS 屬性列表,用逗號間隔。若是想從原始集合中添加或刪除幾個 CSS 屬性,能夠用這個列表來完成。若是想添加新屬性,直接寫入屬性名,若是想刪除,就在屬性名前加個連字符。 例如,添加
foo 屬性和刪除
border-radius 屬性,此選項的值將是:
foo, -border-radius。
|
|
css.msProperties
可能用於
ms vendor 前綴的用逗號間隔的 CSS 屬性列表。這個列表用於在展開
-property 縮寫時 生成前綴屬性列表。空值意味着全部可用的 CSS 屬性都將擁有
ms 前綴。
|
accelerator, backface-visibility, background-position-x, background-position-y, behavior, block-progression, box-align, box-direction, box-flex, box-line-progression, box-lines, box-ordinal-group, box-orient, box-pack, content-zoom-boundary, content-zoom-boundary-max, content-zoom-boundary-min, content-zoom-chaining, content-zoom-snap, content-zoom-snap-points, content-zoom-snap-type, content-zooming, filter, flow-from, flow-into, font-feature-settings, grid-column, grid-column-align, grid-column-span, grid-columns, grid-layer, grid-row, grid-row-align, grid-row-span, grid-rows, high-contrast-adjust, hyphenate-limit-chars, hyphenate-limit-lines, hyphenate-limit-zone, hyphens, ime-mode, interpolation-mode, layout-flow, layout-grid, layout-grid-char, layout-grid-line, layout-grid-mode, layout-grid-type, line-break, overflow-style, perspective, perspective-origin, perspective-origin-x, perspective-origin-y, scroll-boundary, scroll-boundary-bottom, scroll-boundary-left, scroll-boundary-right, scroll-boundary-top, scroll-chaining, scroll-rails, scroll-snap-points-x, scroll-snap-points-y, scroll-snap-type, scroll-snap-x, scroll-snap-y, scrollbar-arrow-color, scrollbar-base-color, scrollbar-darkshadow-color, scrollbar-face-color, scrollbar-highlight-color, scrollbar-shadow-color, scrollbar-track-color, text-align-last, text-autospace, text-justify, text-kashida-space, text-overflow, text-size-adjust, text-underline-position, touch-action, transform, transform-origin, transform-origin-x, transform-origin-y, transform-origin-z, transform-style, transition, transition-delay, transition-duration, transition-property, transition-timing-function, user-select, word-break, word-wrap, wrap-flow, wrap-margin, wrap-through, writing-mode |
css.msPropertiesAddon
用於
css.msPreperties
選項的附加 CSS 屬性列表,用逗號間隔。若是想從原始集合中添加或刪除幾個 CSS 屬性,能夠用這個列表來完成。若是想添加新屬性,直接寫入屬性名,若是想刪除,就在屬性名前加個連字符。 例如,添加
foo 屬性和刪除
border-radius 屬性,此選項的值將是:
foo, -border-radius。
|
|
css.oProperties
可能用於
o vendor 前綴的用逗號間隔的 CSS 屬性列表。這個列表用於在展開
-property 縮寫時 生成前綴屬性列表。空值意味着全部可用的 CSS 屬性都將擁有
o 前綴。
|
dashboard-region, animation, animation-delay, animation-direction, animation-duration, animation-fill-mode, animation-iteration-count, animation-name, animation-play-state, animation-timing-function, border-image, link, link-source, object-fit, object-position, tab-size, table-baseline, transform, transform-origin, transition, transition-delay, transition-duration, transition-property, transition-timing-function, accesskey, input-format, input-required, marquee-dir, marquee-loop, marquee-speed, marquee-style |
css.oPropertiesAddon
用於
css.oPreperties
選項的附加 CSS 屬性列表,用逗號間隔。若是想從原始集合中添加或刪除幾個 CSS 屬性,能夠用這個列表來完成。若是想添加新屬性,直接寫入屬性名,若是想刪除,就在屬性名前加個連字符。 例如,添加
foo 屬性和刪除
border-radius 屬性,此選項的值將是:
foo, -border-radius。
|
|
css.propertyEnd
在展開 CSS 縮寫時在每一個 CSS 屬性的後面放置的符號。
|
; |
css.unitAliases
用逗號間隔的單位別名的列表,用於 CSS 縮寫。每一個別名的定義格式以下:
alias:unit_value。
|
e:em, p:%, x:ex, r:rem |
css.unitlessProperties
必須包含單位的屬性的列表。
|
z-index, line-height, opacity, font-weight, zoom |
css.valueSeparator
定義在展開 CSS 縮寫時,在兩個 CSS 屬性和值之間放置的符號。
|
: |
css.webkitProperties
可能用於
webkit vendor 前綴的用逗號間隔的 CSS 屬性列表。這個列表用於在展開
-property 縮寫時 生成前綴屬性列表。空值意味着全部可用的 CSS 屬性都將擁有
webkit 前綴。
|
animation, animation-delay, animation-direction, animation-duration, animation-fill-mode, animation-iteration-count, animation-name, animation-play-state, animation-timing-function, appearance, backface-visibility, background-clip, background-composite, background-origin, background-size, border-fit, border-horizontal-spacing, border-image, border-vertical-spacing, box-align, box-direction, box-flex, box-flex-group, box-lines, box-ordinal-group, box-orient, box-pack, box-reflect, box-shadow, color-correction, column-break-after, column-break-before, column-break-inside, column-count, column-gap, column-rule-color, column-rule-style, column-rule-width, column-span, column-width, dashboard-region, font-smoothing, highlight, hyphenate-character, hyphenate-limit-after, hyphenate-limit-before, hyphens, line-box-contain, line-break, line-clamp, locale, margin-before-collapse, margin-after-collapse, marquee-direction, marquee-increment, marquee-repetition, marquee-style, mask-attachment, mask-box-image, mask-box-image-outset, mask-box-image-repeat, mask-box-image-slice, mask-box-image-source, mask-box-image-width, mask-clip, mask-composite, mask-image, mask-origin, mask-position, mask-repeat, mask-size, nbsp-mode, perspective, perspective-origin, rtl-ordering, text-combine, text-decorations-in-effect, text-emphasis-color, text-emphasis-position, text-emphasis-style, text-fill-color, text-orientation, text-security, text-stroke-color, text-stroke-width, transform, transition, transform-origin, transform-style, transition-delay, transition-duration, transition-property, transition-timing-function, user-drag, user-modify, user-select, writing-mode, svg-shadow, box-sizing, border-radius |
css.webkitPropertiesAddon
用於
css.webkitPreperties 選項的附加 CSS 屬性列表,用逗號間隔。若是想從原始集合中添加或刪除幾個 CSS 屬性,能夠用這個列表來完成。若是想添加新屬性,直接寫入屬性名,若是想刪除,就在屬性名前加個連字符。 例如,添加
foo 屬性和刪除
border-radius 屬性,此選項的值將是:
foo, -border-radius。
|
|
filter.commentAfter
當應用
comment 過濾器時,將被放在對應的元素後的註釋內容的定義。這個定義是傳遞給
_.template()函數的 ERB 風格的模板。在模板上下文中,以下屬性和函數是有效的:
|
<!-- /<%= attr("id", "#") %><%= attr("class", ".") %> --> |
filter.commentBefore
當應用
comment 過濾器時,將被放在對應的元素前的註釋內容的定義。更多信息,請參閱
filter.commentAfter 屬性的描述。
|
|
filter.commentTrigger
一個屬性列表,若是其中的項在縮寫中存在,該縮寫將被添加註釋。若是但願爲每一個元素添加註釋,能夠將其設置爲
*
|
id, class |
filter.trimRegexp
用於在
t (trim) 過濾器中檢索要刪除行標記 (numbers, dashes, bullets, 等)的正則表達式。這個裁切示波器用於包圍縮寫中從其它文檔(如 Microsoft Word)中粘貼過來的列表。
|
[\s|\u00a0]*[\d|#|\-|*|\u2022]+\.?\s* |
format.forceIndentationForTags
定義強制其內部縮進的標籤列表,用逗號間隔。
|
body |
format.noIndentTags
定義不其內縮進行的標籤列表,用逗號間隔。
|
html |
sass.propertyEnd
定義展開 SASS 風格的 CSS 縮寫時在每一個 CSS 屬性後面放置的符號。
|
|
stylus.propertyEnd
定義展開 Stylus 風格的 CSS 縮寫時在每一個 CSS 屬性後面放置的符號。
|
|
stylus.valueSeparator
定義展開 Stylus 風格的 CSS 縮寫時在兩個屬性和值以前放置的符號。
|
輸出配置用於定義如何生成 HTML 內容。例如,當展開 br
屬性時,Emmet 可能會生成以下標籤中的一種:
<br>
— HTML 記號<br />
— XHTML 記號<br/>
— XML 記號Emmet 嘗試自動探測當前文檔的輸出配置。例如,若是文檔定義成 XHTML 類型,將使用 xhtml
配置,不然使用 html
。
但有時,可能想要強制 Emmet 使用另外一個特定語法的配置,或者使用帶有特殊規則的自定義配置。
在這種狀況下,能夠在擴展文件夾建立 syntaxProfiles.json
文件而且爲必備的語法指定配置。
這個文件的內容就是簡單的鍵/值對字典,鍵是定義在 snippets.json
文件中的語法名,值是預約義配置(字符串)的名字或者帶有配置選項(object)的字典:
{ // force XHTML profile for HTML syntax "html": "xhtml", // create our own profile for XML "xml": { "tag_case": "upper", "attr_quotes": "single" } }
預約義配置
html
— 默認輸出配置。xhtml
— 與 html 相同,但當輸出空元素時,帶有關閉斜槓
:<br />。
xml
— XML 和 XSL 語法的默認定義,在帶有縮進的新行輸出每一個標籤,輸出空標籤時帶有關閉斜槓: <br/>
。line
— 用於輸出不帶有任何縮進和換行的展開縮寫。在某些編輯器中,默認應用於相似 JavaScript 或 Python 等編程語言上,以便生成有效的字符串。能夠指定一個帶有以下鍵的字典來定義本身的輸出配置:
tag_case:生成標籤名的大小寫,字符串類型。可取的值有:
upper(大寫)、
lower(小寫)
和 asis(原樣輸出)
。attr_case:生成標籤的屬性名的大小寫,字符串類型。可取的值有:upper(大寫)、
lower(小寫)
和 asis(原樣輸出)
。
attr_quotes
: 圍住屬性值的括號,字符串,可取的值有: single(單引號)
和 double(雙引號)。
tag_nl
: 在帶有縮進的新行上輸出每一個標籤。可取的值有true
(每一個標籤佔一行),false
(不格式化) 和 'decide'
(字符串;僅塊級元素生成新行)。tag_nl_leaf:當
tag_nl
設置成 true,定義葉塊節點(即沒有子節點的節點)裏面是否格式化換行符。
indent:在新行上縮進標籤,布爾值。
inline_break:達到多少行內元素須要強制換行,數值類型。默認值爲
3。例如
span*2
將展開成 <span></span><span></span>,但
span*3
將生成三個 <span>
元素,每一個佔有一行。若是設置爲 0 將再也不爲行內元素換行。
self_closing_tag:空元素是否還有關閉斜槓,如
br
和 img
,布爾值。可取的值有 true
、 false
和 'xhtml'
(字符串;按 XHTML 風格輸出關閉斜槓,例如: <br />
)。filters
: 自動應用的 過濾器 列表。