Emmet
Emmet은 HTML, CSS의 자동완성 기능을 통해 작업 생산성을 향상시키는 텍스트 편집기 플러그인입니다. 서브라임 텍스트의 Snippets 기능과 같이 미리 정의되어있는 문법을 입력 후 탭 키를 실행하면 정의되어 있는 코드가 자동완성 되는 기능입니다.
설치
Command Palette를 실행해(Ctrl+Shift+P) "install package"를 입력해 Package Control을 실행합니다. "Emmet"를 입력해 플러그인을 설치합니다.

Syntax
HTML에서 Emmet을 사용하는 기본적인 방법은 CSS3 선택자를 사용하는 것과 같은 문법을 사용하는 것입니다. "nav>ul>li"를 입력하고 탭을 누르면 ul 태그의 자식 태그로 ul 태그를 생성하고 ul 태그 밑에 li 태그를 자식 태그로 생성합니다.

Emmet의 문법은 다음과 같습니다. 예제의 결과는 별도로 표기하지 않았으니 직접 실행해 보세요.
| 문법 | 예제 | 설명 |
|---|---|---|
| > | ul>li | Child |
| + | p+bq | Sibling |
| ^ | p>span+em^bq | Climb-up |
| () | (header>ul>li*2>a)+footer | Grouping |
| * | ul>li*5 | Multiplication |
| $ | ul>li.item$*5 | numbering |
| #, . | form#search.wide | ID and CLASS attributes |
| [] | td[rowspan=2 colspan=3 title] | Custom attributes |
| {} | p>{Click }+a{here}+{ to continue} | Text |
| table>.row>.col | Implicit tag names(암시적 태그 사용) |
위 문법은 태그를 복합적으로 생성하는 방법며 Snippets을 사용하는 것 처럼 축약어를 입력해 자동 완성기능을 이용할 수 있습니다.
| 문법 | 출력 | ||
|---|---|---|---|
| input | <input type="text"> | ||
| inp | <input type="text" name="\ | " id="\ | "> |
| input:search | <input type="search" name="\ | " id="\ | "> |
위 표는 input 태그에 관련해 예를 들은 것입니다. '|'(Vertical Bar)로 되어 있는 부분은 코드가 출력된 후 탭 키가 눌러졌을 때 커서가 이동하는 위치로 어트리뷰트 속성을 바로 수정할 수 있습니다. CSS 파일 역시 HTML과 같은 형식으로 Emmet을 사용할 수 있으며 Emmet에서 제공하는 문법은 Cheat Sheet(http://docs.emmet.io/cheat-sheet/)를 통해 확인할 수 있습니다.
사용방법
축약어 확장
Expand Abbreviation - Ctrl+E

축약어로 감싸는 태그 생성
Wrap With Abbreviation - Shift+Ctrl+G

쌍을 이루는 태그 선택
Match Tag Pair - SCtrl+, Shift+Ctrl+0

쌍을 이루는 태그로 이동
Go to Matching Pair - Ctrl+Alt+J

이전, 다음 편집점으로 이동
Go to Edit Point - Ctrl+Alt+→ or Ctrl+Alt+←

이전, 다음 아이템 선택
Select Item - Shift+Ctrl+. or Shift+Ctrl+,

포인터가 위치한 곳이 포함하는 하위까지 주석처리
Toggle Comment - Shift+Ctrl+/

포인터가 위치한 곳의 시작태그와 끝맺음 태그를 삭제
Remove Tag - Shift+Ctrl+;

이미지 너비와 높이 자동 입력
Update Image Size - Ctrl+U

사칙연산 실행
Evaluate Math Expression - Shift+Ctrl+Y

Vendor Prefix CSS 변경 값을 반영
Reflect CSS Value - Shift+Ctrl+Y

태그 이름 변경
Rename Tag - Shift+Ctrl+'

Emmet 기능 키 정리
| 단축키 | 설명 |
|---|---|
| Ctrl-+ E | Expand Abbreviation - 축약어 확장 |
| Shift+Ctrl+G | Wrap With Abbreviation - 축약어로 감싸는 태그 생성 |
| Ctrl + , | Match Tag Pair Outward - 쌍을 이루는 태그 안쪽을 선택 |
| Shift+Ctrl+0 | Match Tag Pair Inward - 쌍을 이루는 태그 바깥쪽을 선택(윈도우에서 작동안함) |
| Ctrl+Alt+J | Go to Matching Pair - 쌍을 이루는 태그로 이동 |
| Ctrl+Alt+→ or Ctrl+Alt+← | Go to Edit Point - 이전, 다음 편집점으로 이동 |
| Shift+Ctrl+. or Shift+Ctrl+, | Select Item - 이전, 다음 아이템 선택 |
| Shift+Ctrl+/ | Toggle Commend - 포인터가 위치한 곳이 포함하는 하위까지 주석처리 |
| Shift+Ctrl+; | Remove Tag - 포인터가 위치한 곳의 시작태그와 끝맺음 태그를 삭제 |
| Ctrl + U | Update Image Size - 이미지 너비와 높이 속성을 삽입 |
| Shift+Ctrl+Y | Evaluate Math Expression - 사칙연산 실행 |
| Shift+Ctrl+R | Reflect CSS Value - Vendor Prefix CSS 변경 값을 반영 |
| Shift+Ctrl+' | Rename Tag - 태그 이름 변경 |
증가/감소 액션

| 단축키 | 설명 |
|---|---|
| Ctrl + ↑ | 1씩 증가 |
| Ctrl + ↓ | 1씩 감소 |
| Alt + ↑ | 0.1씩 증가 |
| Alt + ↓ | 0.1씩 감소 |
| Shift+Alt+↑ | 10씩 증가 |
| Shift+Alt+↓ | 10씩 감소 |
사용자 키 바인딩
Match Tag Pair Inword
쌍을 이루는 태그를 안쪽으로 선택하는 "Match Tag Pair Inword" 명령의 Ctrl+Shift+0 단축키가 실행이 되지 않는 오류가 있어 사용자 키 바인딩 설정으로, 이 명령이 실행 가능하도록 수정해 보겠습니다.
서브라임 콘솔로 "Ctrl+," 단축키가 다른 명령으로 사용하고 있는지 확인한 후 사용하고 있지 않다면 "Preferences > Key Bindings - User" 메뉴를 실행해 " ".sublime-keymap" 파일을 열어 다음 코드를 입력합니다
[{
"keys": ["ctrl+."],
"args": {
"action": "balance_inward"
},
"command": "run_emmet_action",
"context": [{
"key": "emmet_action_enabled.balance_inward"
}]
}]
"Match Tag Pair Outword"의 단축키가 "Ctrl+,"로 지정되어 있어 "Match Tag Pair Inword"의 단축키도 직관적이게 "Ctrl+."으로 지정하였습니다.
Line Up, Line Down
Emmet을 설치하면 기본 스크롤 기능인 Ctrl + ↑(up), Ctrl + ↓(down)이 Incerment/Decrement 명령으로 인해 실행이 되지 않습니다. 스크롤 기능을 사용하기 위해서 Ctrl+Up, Ctrl+Down 키를 사용자 키 바인딩에 재 설정해야합니다. Emmet의 증가, 감소 기능 사용하려면 별도의 키로 지정해 사용하시면 됩니다.
[{
"keys": ["ctrl+up"],
"command": "scroll_lines",
"args": { "amount": 1.0 }
}, {
"keys": ["ctrl+down"],
"command": "scroll_lines",
"args": { "amount": -1.0 }
}]
Goto Symbol in Project
Emmet을 설치하면 "Goto > "Goto Simbol in Project"의 단축키 Ctrl+Shift+R 키가 실행이 되지 않습니다. Emmet 기능 중 Reflect CSS Value 기능이 단축키를 재 정의해서 발생하는 현상입니다. "Goto Simbol in Project" 단축키를 사용하고 싶다면, 사용자 키 바인딩 파일에 해당 항목을 다시 작성하시면 됩니다.
[{
"keys": ["ctrl+shift+r"],
"command": "goto_symbol_in_project"
}]
Soft Undo
이미지 사이지 너비와 높이 조정하는 단축키 Ctrl+U가 선택해제 단축키를 덮어 씌우기 때문에 이미지 사이즈 조정 단축기능을 자주 사용하지 않는다면 기본 기능을 다시 설정해 사용하시기 바랍니다.
[{
"keys": ["ctrl+u"],
"command": "soft_undo"
}]
참고자료
GIT: https://github.com/sergeche/emmet-sublime Cheat Sheet: http://docs.emmet.io/cheat-sheet/