Skip to content

Instantly share code, notes, and snippets.

@benelog
Last active July 30, 2026 22:12
Show Gist options
  • Select an option

  • Save benelog/dbdf0a3331786deb216f1f2bdde390eb to your computer and use it in GitHub Desktop.

Select an option

Save benelog/dbdf0a3331786deb216f1f2bdde390eb to your computer and use it in GitHub Desktop.
Helix에서 Go 테스트 실행하는 키바인딩 설정

Helix에서 Go 테스트 실행하기

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+)는 현재 선택된 텍스트로 치환된다.

  1. 커서를 테스트 함수 이름 위에 놓는다 (예: TestTransform)
  2. miw (match inner word)로 단어 전체를 선택한다
  3. Space t r

go test -v -run '^TestTransform$' ./... 이 실행된다. ^$로 감쌌기 때문에 TestTransformOrders처럼 이름이 비슷한 다른 테스트가 함께 실행되지 않는다.

miw란?

Helix는 Vim과 달리 선택이 먼저, 동작이 나중(selection-first)이다. 커서는 항상 최소 1글자를 선택하고 있는 상태이며, %{selection}은 이 선택 내용을 그대로 치환한다. 따라서 단어 전체를 선택하지 않고 Space t r을 누르면 커서 밑의 한 글자만 -run 패턴에 들어가서 원하는 테스트가 실행되지 않는다.

miw는 세 개의 키를 순서대로 누르는 것이다:

의미
m match 모드 진입 — 괄호 짝 이동, 감싸기, 텍스트 오브젝트 선택 기능이 모여 있다
i inner(안쪽) — 텍스트 오브젝트의 내용만 선택하고 주변 공백은 제외한다
w word 텍스트 오브젝트

즉 "커서가 놓인 단어의 안쪽 전체를 선택"이며, Vim의 viw에 해당한다. 커서가 단어의 어느 글자 위에 있든 동작하고, "word"는 영문·숫자·밑줄이 이어진 덩어리이므로 TestTransform_v2 같은 이름도 한 번에 선택된다.

같은 패턴의 변형들:

  • mawaround word. 단어와 주변 공백까지 선택
  • miW — WORD 단위. 공백을 제외한 모든 문자가 이어진 덩어리 (foo.bar() 같은 것 통째로)
  • mi( / mi" — 괄호/따옴표 안의 내용 선택
  • mif / maf — tree-sitter 기반으로 현재 함수의 본문/전체 선택 (Go는 textobject 쿼리가 지원되므로 동작한다. hx --health go로 확인 가능)

선택을 해제하고 커서만 남기려면 ;를 누르면 된다.

참고

  • 결과 팝업은 아무 키나 누르면 닫힌다.
  • :sh는 명령이 끝날 때까지 아무 표시 없이 기다린다. CGO를 쓰는 프로젝트(예: Fyne GUI)는 빌드 캐시가 비어 있으면 첫 실행에 1분 이상 걸릴 수 있으니, 결과가 안 보인다고 당황하지 말 것. 두 번째 실행부터는 캐시 덕분에 수 초 안에 끝난다.
  • 출력이 길 때를 대비해 tail로 마지막 부분만 잘라서 보여주도록 했다.
  • gopls가 설치되어 있으면 컴파일 에러 진단은 편집 중 실시간으로 표시되므로, 테스트 실행만 이 키바인딩으로 처리하면 된다.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment