Helix 에디터에는 내장 터미널이 없지만, :sh(:run-shell-command) 명령과 키바인딩을 조합하면
에디터 안에서 바로 Go 테스트를 실행하고 결과를 팝업으로 확인할 수 있다.
Helix 25.07 기준으로 확인했다.
~/.config/helix/config.toml:
# Space + t 로 시작하는 테스트 실행 키바인딩
[keys.normal.space.t]
t = ":sh go test ./... 2>&1 | tail -30"
v = ":sh go test -v ./... 2>&1 | tail -50"
r = ":sh go test -v -run '^%{selection}$' ./... 2>&1 | tail -50"설정 후 Helix에서 :config-reload를 실행하거나 재시작하면 적용된다.
| 키 | 동작 |
|---|---|
Space t t |
전체 테스트 실행 (go test ./...) |
Space t v |
전체 테스트 verbose 실행 (go test -v ./...) |
Space t r |
선택한 이름의 테스트 하나만 실행 |
%{selection} 확장 변수(Helix 25.01+)는 현재 선택된 텍스트로 치환된다.
- 커서를 테스트 함수 이름 위에 놓는다 (예:
TestTransform) miw(match inner word)로 단어 전체를 선택한다Spacetr
→ go test -v -run '^TestTransform$' ./... 이 실행된다.
^와 $로 감쌌기 때문에 TestTransformOrders처럼 이름이 비슷한 다른 테스트가 함께 실행되지 않는다.
Helix는 Vim과 달리 선택이 먼저, 동작이 나중(selection-first)이다. 커서는 항상
최소 1글자를 선택하고 있는 상태이며, %{selection}은 이 선택 내용을 그대로 치환한다.
따라서 단어 전체를 선택하지 않고 Space t r을 누르면 커서 밑의 한 글자만
-run 패턴에 들어가서 원하는 테스트가 실행되지 않는다.
miw는 세 개의 키를 순서대로 누르는 것이다:
| 키 | 의미 |
|---|---|
m |
match 모드 진입 — 괄호 짝 이동, 감싸기, 텍스트 오브젝트 선택 기능이 모여 있다 |
i |
inner(안쪽) — 텍스트 오브젝트의 내용만 선택하고 주변 공백은 제외한다 |
w |
word 텍스트 오브젝트 |
즉 "커서가 놓인 단어의 안쪽 전체를 선택"이며, Vim의 viw에 해당한다.
커서가 단어의 어느 글자 위에 있든 동작하고, "word"는 영문·숫자·밑줄이 이어진
덩어리이므로 TestTransform_v2 같은 이름도 한 번에 선택된다.
같은 패턴의 변형들:
maw— around word. 단어와 주변 공백까지 선택miW— WORD 단위. 공백을 제외한 모든 문자가 이어진 덩어리 (foo.bar()같은 것 통째로)mi(/mi"— 괄호/따옴표 안의 내용 선택mif/maf— tree-sitter 기반으로 현재 함수의 본문/전체 선택 (Go는 textobject 쿼리가 지원되므로 동작한다.hx --health go로 확인 가능)
선택을 해제하고 커서만 남기려면 ;를 누르면 된다.
- 결과 팝업은 아무 키나 누르면 닫힌다.
:sh는 명령이 끝날 때까지 아무 표시 없이 기다린다. CGO를 쓰는 프로젝트(예: Fyne GUI)는 빌드 캐시가 비어 있으면 첫 실행에 1분 이상 걸릴 수 있으니, 결과가 안 보인다고 당황하지 말 것. 두 번째 실행부터는 캐시 덕분에 수 초 안에 끝난다.- 출력이 길 때를 대비해
tail로 마지막 부분만 잘라서 보여주도록 했다. gopls가 설치되어 있으면 컴파일 에러 진단은 편집 중 실시간으로 표시되므로, 테스트 실행만 이 키바인딩으로 처리하면 된다.