포스트

Neovim 코드 진단과 결과 탐색 — LSP·Quickfix·Trouble

검색·빌드·LSP 결과가 생성되고 Quickfix·Diagnostics에 관리되며 Trouble·Picker로 탐색되는 관계와 LazyVim 사용법

Neovim 코드 진단과 결과 탐색 — LSP·Quickfix·Trouble

전체 개념지도 — 생성·관리·표시

1
2
3
4
5
6
7
8
9
10
11
12
13
                  결과 생성
         ┌───────────┼────────────┐
         ▼           ▼            ▼
      :vimgrep     :make       LSP / Linter
         │           │            │
         ▼           ▼       ┌────┴─────────┐
       검색 위치   빌드 오류   ▼              ▼
         └─────┬─────┘     Diagnostics   References 등
               ▼               │              │
       Quickfix / Loclist      │              │
               └───────────────┼──────────────┘
                               ▼
                        Trouble (탐색 UI)

위 그림은 대표적인 경로다. Picker는 검색·LSP 결과를 직접 표시할 수도 있으므로 모든 결과가 Quickfix를 거치지 않는다. :make는 makeprg의 외부 빌드를 실행하고 errorformat으로 오류 위치를 해석한다. :vimgrep은 검색 위치를 Quickfix에 채운다.

결과 관리 — Quickfix·Location List·Diagnostics

개념책임관리 범위
Quickfix검색·빌드·진단 등을 담는 범용 위치 목록편집기 전역 목록 및 이력
Location ListQuickfix와 같은 위치 목록 모델Window별 독립 목록
Diagnostics (vim.diagnostic)LSP·Linter가 보고한 오류·경고·힌트의 현재 상태버퍼·제공자(namespace)별

Quickfix는 스냅샷 중심으로 활용하지만 플러그인이 계속 갱신할 수도 있다. Diagnostics와의 본질적인 차이는 실시간 여부가 아니라 범용 위치 목록과 진단 상태라는 관리 모델이다. LSP 진단은 Quickfix에 자동 등록되지 않으며 vim.diagnostic.setqflist() 등으로 옮길 수 있다.

결과 표시 — Trouble과 Picker

Trouble은 Diagnostics·Quickfix·Location List·LSP 탐색 결과·TODO 위치 등을 목록으로 표시하는 플러그인이다. 언어 분석은 LSP 서버 등이 수행한다. Trouble은 Neovim의 진단 상태를 읽거나 LSP Client를 통해 References·Definitions 등을 요청하고, 결과를 그룹화·미리보기·순회할 수 있다.

Picker도 검색·LSP 결과를 보여주지만 보통 빠른 검색·필터링·선택, Trouble은 패널을 유지하며 여러 위치를 검토하는 흐름에 적합하다. 예를 들어 getUser() 사용처 30곳 중 한 곳을 찾는다면 Picker, 여러 곳을 계속 검토한다면 Trouble이 편리할 수 있다. 둘 중 하나만 가능한 작업은 아니다.

1
2
3
4
5
6
          LSP References (사용처 여러 곳)
                       │
            ┌──────────┴──────────┐
            ▼                     ▼
         Picker                 Trouble
      검색·빠른 선택         목록 유지·순회

키맵 요약

키동작설명
<leader>xxDiagnostics워크스페이스 전체 진단 결과
<leader>xXBuffer Diagnostics현재 버퍼의 진단 결과만
<leader>xLLocation List현재 윈도우의 location list
<leader>xQQuickfix List전역 quickfix list
<leader>csSymbols현재 문서의 LSP 심볼 목록
<leader>cSLSPreferences/definitions 등 LSP 결과
<leader>xtTodoTrouble로 TODO/FIX/FIXME/HACK 등 검색
<leader>xTTodo/Fix/FixmeTrouble로 TODO/FIX/FIXME만 검색

picker로 같은 항목을 검색하려면 <leader>st/<leader>sT를 쓴다.


진단 메시지·LSP 로그·:messages를 실제로 열어 확인하는 방법(<leader>cd, :LspLog, :messages)은 LazyVim Diagnostics 로그/메시지 확인법에 정리했습니다. 이 글은 Trouble 키맵·개념, 저 글은 로그 확인 절차입니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.