μλ νμΈμ, μ λ μ΄κ²μ΄ μλνλ€κ³ κ°μ νκ³ μλνλ λ€λ₯Έ λ©ν±μ κ°μ§κ³ μμ§λ§ μ¬κΈ°μμλ μ΅μ Sublime ν μ€νΈ 3μΌλ‘ μ λ°μ΄νΈνμΌλ©° JSXμμ μλνλ html νκ·Έ μλ μμ± κΈ°λ₯μ΄ μμ΅λλ€.
μ¬κΈ° λ΄κ° μ¬μ©νλ κ²,
μ΄μ λ₯Ό μκ² μ΄μ? λ€λ₯Έ νλ¬κ·ΈμΈμ μ μλ €μ§ λ¬Έμ κ° μμ΅λκΉ? μ°Ύμλ³΄κ³ μμ λ΄λ €κ³ νμ§λ§ μ무 κ²λ μλνμ§ μμ΅λλ€.
{
"keys": ["tab"],
"command": "expand_abbreviation_by_tab",
// put comma-separated syntax selectors for which
// you want to expandEmmet abbreviations into "operand" key
// instead of SCOPE_SELECTOR.
// Examples: source.js, text.html - source
"context": [
{
"operand": "source.js, meta.class.js, meta.group.braces.curly.js, meta.group.braces.round.js, meta.jsx.js ",
"operator": "equal",
"match_all": true,
"key": "selector"
},
// run only if there's no selected text
{
"match_all": true,
"key": "selection_empty"
},
// don't work if there are active tabstops
{
"operator": "equal",
"operand": false,
"match_all": true,
"key": "has_next_field"
},
// don't work if completion popup is visible and you
// want to insert completion with Tab. If you want to
// expand Emmet with Tab even if popup is visible --
// remove this section
{
"operand": false,
"operator": "equal",
"match_all": true,
"key": "auto_complete_visible"
},
{
"match_all": true,
"key": "is_abbreviation"
}
]
}
μ΄μ λ λͺ¨λ₯΄κ² μ§λ§ μλμμ μλνμ΅λλ€!
[
{ "keys": ["tab"], "command": "expand_abbreviation_by_tab", "context":
[
{ "operand": "source.js", "operator": "equal", "match_all": true, "key": "selector" },
{ "match_all": true, "key": "selection_empty" },
{ "operator": "equal", "operand": false, "match_all": true, "key": "has_next_field" },
{ "operand": false, "operator": "equal", "match_all": true, "key": "auto_complete_visible" },
{ "match_all": true, "key": "is_abbreviation" }
]
}
]
λμΌν λ¬Έμ κ° μμμ§λ§ μ½μμ "μ΅μμ κ°μ λ°°μ΄μ΄μ΄μΌ ν©λλ€"μ κ°μ κ²½κ³ λ₯Ό 보λμ΅λλ€.
{
"keys": ["tab"],
"command": "expand_abbreviation_by_tab",
// put comma-separated syntax selectors for which
// you want to expandEmmet abbreviations into "operand" key
// instead of SCOPE_SELECTOR.
// Examples: source.js, text.html - source
"context": [
{
"operand": "source.js, meta.class.js, meta.group.braces.curly.js, meta.group.braces.round.js, meta.jsx.js ",
"operator": "equal",
"match_all": true,
"key": "selector"
},
// run only if there's no selected text
{
"match_all": true,
"key": "selection_empty"
},
// don't work if there are active tabstops
{
"operator": "equal",
"operand": false,
"match_all": true,
"key": "has_next_field"
},
// don't work if completion popup is visible and you
// want to insert completion with Tab. If you want to
// expand Emmet with Tab even if popup is visible --
// remove this section
{
"operand": false,
"operator": "equal",
"match_all": true,
"key": "auto_complete_visible"
},
{
"match_all": true,
"key": "is_abbreviation"
}
]
}
μμ μ½λλ κ°μ²΄,
μλ μ½λλ κ°μ²΄μ λ°°μ΄μ
λλ€
[
{ "keys": ["tab"], "command": "expand_abbreviation_by_tab", "context":
[
{ "operand": "source.js", "operator": "equal", "match_all": true, "key": "selector" },
{ "match_all": true, "key": "selection_empty" },
{ "operator": "equal", "operand": false, "match_all": true, "key": "has_next_field" },
{ "operand": false, "operator": "equal", "match_all": true, "key": "auto_complete_visible" },
{ "match_all": true, "key": "is_abbreviation" }
]
}
]
μ΄κ²μ "μ΅μμ κ°μ λ°°μ΄μ΄μ΄μΌ ν¨" κ²½κ³ λ₯Ό μμ νλ―λ‘ μλν©λλ€.
κ°μ₯ μ μ©ν λκΈ
μ΄μ λ λͺ¨λ₯΄κ² μ§λ§ μλμμ μλνμ΅λλ€!