🙏 Hun 탭 파라미타
Tab 한 번으로 괄호의 저편(彼岸)까지 — Vim 모드를 존중하는 TabOut
One Tab to the other shore of your brackets — a Vim-aware TabOut for VS Code
Visual Studio에서 C# 코딩할 때처럼 Tab 한 번으로 ) ] } " 같은 닫는 문자를 빠져나갑니다.
foo(bar|) --Tab--> foo(bar)|
s = "abc|" --Tab--> s = "abc"|
English: Press Tab to jump out of ) ] } " ' ` — but only in Insert mode (VSCodeVim / VSCode Neovim), and only when there is something to jump over, so snippets, Emmet and indentation keep their default Tab behavior.
왜 만들었나
기존 TabOut 확장은 Tab 키바인딩에 Vim 모드 조건이 없어서, VSCodeVim의 Normal/Visual 모드에서도 Tab을 가로챕니다. 이 확장은 다음 조건에서만 동작합니다.
- Insert 모드일 때만 (
vim.mode == 'Insert', VSCode Neovim은 neovim.mode == 'insert')
- Vim 확장이 없으면 평소처럼 항상 동작
- 선택 영역이 없고, 자동완성 창 / 스니펫 탭스톱 / 인라인 제안(Copilot) 중이 아닐 때
- 커서 바로 뒤에 넘길 문자가 있을 때만 키바인딩이 켜집니다. 그래서 그 외의 Tab(스니펫, Emmet, 들여쓰기 등)은 VS Code 기본 동작 그대로입니다.
설치
원본 TabOut(albert.tabout)은 비활성화하세요. 같은 Tab 키를 쓰므로 둘 다 켜 두면 충돌합니다.
마켓플레이스에서 Hun 탭 파라미타를 검색하거나, .vsix로 직접 설치할 수 있습니다.
code --install-extension tabout-vim-0.1.0.vsix
설정
| 설정 |
기본값 |
설명 |
taboutVim.enabled |
true |
기능 켜기/끄기 |
taboutVim.characters |
) ] } > " ' ` |
Tab으로 넘어갈 문자 |
taboutVim.skipWhitespace |
false |
닫는 문자 앞의 공백도 건너뛰기 |
taboutVim.ignoreIndentation |
true |
줄 맨 앞 들여쓰기 중엔 평소 Tab |
taboutVim.smartQuotes |
true |
여는 따옴표 앞에서는 넘기지 않기 (아래 참고) |
taboutVim.shiftTab |
false |
Shift+Tab으로 여는 문자 앞으로 되돌아가기 |
taboutVim.openingCharacters |
( [ { < " ' ` |
Shift+Tab용 여는 문자 목록 |
명령 팔레트: TabOut Vim: 켜기/끄기 전환
smartQuotes
따옴표는 여는 쪽과 닫는 쪽이 같은 글자라서 구분이 필요합니다. 줄에서 커서 앞에 같은 따옴표가 홀수 개(이스케이프 \" 제외)일 때만 "닫는 따옴표"로 보고 넘어갑니다.
s = "abc|" → Tab 으로 넘어감 (앞에 " 가 1개)
s = |"abc" → 평소 Tab (앞에 " 가 0개, 여는 따옴표)
영어 주석의 '(apostrophe) 등으로 어긋날 수 있으니, 거슬리면 taboutVim.smartQuotes를 false로 끄세요.
문제 해결
- Tab이 두 번 먹힌다 / 이상하게 동작한다: 원본 TabOut이 아직 켜져 있는지 확인하세요.
- Normal 모드에서 Tab이 안 먹는다: 이 확장은 Insert 모드에서만 Tab을 가져갑니다. 그 외에는 Vim 확장의 동작입니다.
a |> b 같은 비교 연산자 앞에서 Tab이 넘어간다: taboutVim.characters에서 >를 빼세요.
개발
npm install
npm run test:logic # 순수 로직 테스트 (mocha, VS Code 불필요)
npm test # VS Code 통합 테스트 (vscode-test)
npm run vsix # .vsix 만들기
VS Code에서 이 폴더를 열고 F5를 누르면 Extension Development Host로 바로 디버깅할 수 있습니다.
라이선스
MIT
감사의 말 · Acknowledgements
이 확장은 Albert Romkes 님의 TabOut
(GitHub, MIT License)에서 영감을 받아 만들었습니다.
Vim 확장과 함께 쓸 때 모드가 충돌하는 문제를 풀기 위해 처음부터 새로 작성했으며, 원본과 코드를 공유하지 않습니다.
Inspired by TabOut
by Albert Romkes (MIT License). Written from scratch to work with Vim modes; no code is shared.