Post

LazyVim x — Trouble 기반 코드 문제 탐색

Diagnostics / Quickfix / Location List / Todo Comments를 Trouble UI 하나로 통합 탐색하는 키맵 그룹 정리

LazyVim x — Trouble 기반 코드 문제 탐색

개요

LazyVim에서 <leader>xTrouble 플러그인을 통해 코드 문제와 목록을 탐색하는 키맵 그룹이다. Diagnostics, Quickfix List, Location List, Todo Comments 등을 통합 UI로 제공한다.

키맵 요약

동작설명
<leader>xxDiagnostics워크스페이스 전체 진단 결과
<leader>xXBuffer Diagnostics현재 버퍼의 진단 결과만
<leader>xLLocation List현재 윈도우의 location list
<leader>xQQuickfix List전역 quickfix list
<leader>xsSymbolsLSP 심볼 목록
<leader>xlLSPLSP references/definitions 등
<leader>xtTodo CommentsTODO/FIX/FIXME/HACK 등 전체
<leader>xTTodo (filtered)TODO/FIX/FIXME만 필터링

핵심 개념 비교

Diagnostics

LSP(Language Server Protocol)가 코드를 분석해서 제공하는 에러, 경고, 힌트 목록이다.

  • 소스: LSP 서버 (tsserver, pyright, jdtls 등)
  • 범위: 워크스페이스 전체 또는 버퍼 단위
  • 예시: 타입 불일치, 미사용 변수, import 누락
1
2
error: Type 'string' is not assignable to type 'number'.  [ts(2322)]
warn:  'foo' is declared but its value is never read.     [ts(6133)]

Quickfix List

Vim이 전역적으로 관리하는 에러/결과 목록이다. :make, :grep, :vimgrep 등의 명령 결과가 여기에 쌓인다.

  • 소스: 빌드 에러, grep 결과, LSP 출력 등
  • 범위: 전역 (Vim 인스턴스당 하나)
  • 관련 명령: :copen, :cnext, :cprev
1
2
:vimgrep /TODO/ **/*.lua    " 결과가 quickfix list에 들어감
:copen                       " quickfix 창 열기

Location List

Quickfix와 구조는 같지만 윈도우 단위로 관리된다. 각 윈도우가 독립적인 location list를 가진다.

  • 소스: :lmake, :lgrep, :lvimgrep
  • 범위: 윈도우 로컬 (윈도우마다 별도)
  • 관련 명령: :lopen, :lnext, :lprev
1
2
Quickfix List  →  전역 1개   →  :copen / :cnext / :cprev
Location List  →  윈도우별   →  :lopen / :lnext / :lprev

Todo Comments

코드에 작성된 TODO, FIX, FIXME, HACK, NOTE 등의 주석을 수집해서 보여준다. todo-comments.nvim 플러그인이 담당한다.

1
2
3
-- TODO: 이 로직 리팩토링 필요
-- FIXME: 엣지 케이스 처리 안 됨
-- HACK: 임시 우회, 다음 스프린트에 제거

Trouble 플러그인의 역할

위 4가지는 각각 다른 소스에서 오지만, Trouble이 통합 UI로 묶어준다.

1
2
3
4
5
6
┌─────────────────────────────────┐
│           Trouble UI            │
├─────────┬───────────┬───────────┤
│  LSP    │  Vim      │  Plugin   │
│  Diag   │  QF / Loc │  Todo     │
└─────────┴───────────┴───────────┘
  • 일관된 인터페이스로 탐색 (같은 키로 이동, 접기/펼치기)
  • 파일별 그룹핑, 미리보기, 자동 갱신 지원
  • <leader>x 하나로 모든 목록에 접근 가능
This post is licensed under CC BY 4.0 by the author.