gp.nvim으로 Neovim에서 AI 코딩 워크플로우 구성하기
gp.nvim 플러그인으로 Neovim 안에서 채팅, 인라인 편집, 코드 리뷰, 유닛 테스트 생성까지 처리하는 실전 키맵과 워크플로우 정리
2026-08-12 · 최초 발행 2026-03-25
Neovim에서 gp.nvim을 쓰면 채팅, 인라인 편집, 코드 리뷰, 테스트 생성을 각각 다른 커맨드와 키맵으로 나눠 처리하게 된다. 지금 설정 기준 기본 에이전트는 ChatKimi-K2(채팅)와 CodeKimi-K2(코드 커맨드)이고, 둘 다 ollama로 로컬에서 kimi-k2.5:cloud 모델을 돌린다. 아래는 실제로 쓰는 키맵과 커맨드를 워크플로우 단위로 정리한 것이다.
에이전트 전환
:GpSelectAgent " Telescope UI로 에이전트 선택
<leader>ga " 동일
사용 가능한 에이전트
| 에이전트 | 용도 | Provider |
|---|---|---|
ChatKimi-K2 |
채팅 (기본) | ollama (로컬) |
ChatGPT4o |
채팅 (고품질) | OpenAI |
ChatGPT4o-mini |
채팅 (빠른 응답) | OpenAI |
ChatGPT-o3-mini |
채팅 (추론) | OpenAI |
CodeKimi-K2 |
코드 커맨드 (기본) | ollama (로컬) |
CodeGPT4o |
코드 커맨드 (고품질) | OpenAI |
CodeGPT4o-mini |
코드 커맨드 (빠른 응답) | OpenAI |
CodeGPT-o3-mini |
코드 커맨드 (추론) | OpenAI |
Chat 에이전트와 Command 에이전트는 용도가 갈린다. Chat 에이전트는 :GpChatNew 같은 대화 커맨드에서 쓰고, Command 에이전트는 :GpRewrite, :GpFixBug처럼 코드를 직접 바꾸는 인라인 편집 커맨드에서 쓴다. 둘을 헷갈리면 원하는 에이전트가 아닌 다른 에이전트가 응답하게 된다.
Chat으로 대화하기
키맵
| 키 | 커맨드 | 동작 |
|---|---|---|
<leader>gc |
:GpChatNew vsplit |
새 채팅을 vsplit으로 열기 |
<leader>gt |
:GpChatToggle vsplit |
채팅 창 토글 |
<leader>gf |
:GpChatFinder |
이전 채팅 목록 검색 |
<leader>gb |
:GpBufferChatNew |
현재 버퍼 전체를 컨텍스트로 채팅 시작 |
채팅 버퍼 내 단축키
| 단축키 | 동작 |
|---|---|
<C-g><C-g> |
응답 요청 (normal/insert/visual 모두) |
<C-g>s |
생성 중단 |
<C-g>d |
현재 채팅 삭제 |
<C-g>c |
새 채팅 열기 |
버퍼와 선택 영역을 컨텍스트로 넘기기
현재 파일 전체를 컨텍스트로 넘기고 싶으면 <leader>gb를 쓴다. 내부적으로는 :%GpChatNew가 실행되고, 파일 전체 내용이 채팅 컨텍스트에 포함된 채로 새 채팅이 시작된다.
<leader>gb " 현재 파일 전체를 컨텍스트로 새 채팅 시작
라인 일부만 넘기고 싶으면 Visual 모드로 선택한 뒤 <leader>gc를 누르면 된다. 선택 영역이 채팅 컨텍스트로 자동 포함된다.
V (라인 선택) → <leader>gc " 선택 영역이 채팅 컨텍스트로 자동 포함
커맨드라인에서 범위를 직접 지정할 수도 있다.
:%GpChatNew " 파일 전체
:5,20GpChatNew " 5~20번 라인만
:'<,'>GpChatNew " visual 선택 영역 (자동 입력됨)
인라인 편집 — 선택 영역을 응답으로 바로 교체
Inline AI Edit은 선택 영역을 AI 응답으로 직접 교체하는 방식이다. 이때 사용되는 건 Command 에이전트(CodeKimi-K2 등)다.
키맵
| 키 | 커맨드 | 동작 |
|---|---|---|
<leader>gw |
:GpRewrite |
선택 영역을 AI 응답으로 교체 |
:'<,'>GpAppend |
— | 선택 이후에 AI 응답 삽입 |
:'<,'>GpPrepend |
— | 선택 이전에 AI 응답 삽입 |
사용 패턴
1. 함수 전체를 V로 선택
2. <leader>gw 입력
3. 프롬프트 입력: "add error handling and type annotations"
4. Enter → 선택 영역이 AI 응답으로 즉시 교체
5. 결과가 마음에 안 들면 u로 실행 취소
인라인 편집은 gp.nvim이 별도로 관리하는 게 아니라 일반 undo(u)로 롤백된다. 그래서 결과가 마음에 안 들면 그냥 u를 누르면 된다.
커스텀 Hook 커맨드
Visual 선택 후 사용하는 커맨드들이고, 모두 현재 설정의 hooks에 등록되어 있다.
| 키 | 커맨드 | 동작 | 출력 위치 |
|---|---|---|---|
<leader>ge |
:GpExplain |
코드 상세 설명 | popup 창 |
<leader>gr |
:GpCodeReview |
코드 스멜/버그/개선점 분석 | 새 markdown 버퍼 |
<leader>gu |
:GpUnitTests |
유닛 테스트 생성 | vsplit 새 버퍼 |
<leader>gx |
:GpFixBug |
버그 수정 | 선택 영역 인라인 교체 |
<leader>gs |
:GpStop |
생성 중단 | — |
GpRewrite·GpFixBug는 원본을 바로 덮어쓰지만, GpExplain·GpCodeReview·GpUnitTests는 결과를 팝업이나 별도 버퍼로 띄워서 원본 코드는 건드리지 않는다. 리뷰나 설명은 참고만 하고 코드는 그대로 두고 싶을 때 쓰는 커맨드들이다.
생성된 코드를 버퍼에 적용하는 방법
방법 1 — 자동 인라인 교체 (GpRewrite / GpFixBug)
:GpRewrite, :GpFixBug는 응답이 선택 영역을 자동으로 교체한다. 별도 작업이 필요 없다.
방법 2 — 새 버퍼에서 수동 복사 (GpUnitTests / GpCodeReview)
1. GpUnitTests → vsplit에 테스트 코드 생성됨
2. 원하는 블록 위에서 yy 또는 V+y로 yank
3. 원본 버퍼로 이동 (Ctrl-w h/l)
4. p로 붙여넣기
방법 3 — 채팅 버퍼에서 코드블록 복사
1. 채팅 버퍼에서 코드블록 위치로 커서 이동
2. yi` (백틱 안쪽 yank) 또는 수동 V 선택 후 y
3. 원본 버퍼로 이동 후 p
실무 워크플로우 예시
함수 리팩토링
1. 함수 전체 V로 선택
2. <leader>gw
3. 프롬프트: "refactor to use early returns, add JSDoc comments"
4. 응답이 인라인으로 교체됨
5. 마음에 안 들면 u로 롤백
버그 수정
1. 의심 코드 선택
2. <leader>gx (GpFixBug)
3. AI가 버그를 식별하고 수정된 코드로 자동 교체
유닛 테스트 생성
1. 테스트할 함수/클래스 선택
2. <leader>gu (GpUnitTests)
3. vsplit에 테스트 코드 생성됨
4. 검토 후 필요한 부분 복사해서 테스트 파일에 붙여넣기
코드 리뷰
1. 리뷰받을 코드 선택
2. <leader>gr (GpCodeReview)
3. 새 markdown 버퍼에 리뷰 결과 출력
4. 지적 사항 확인 후 직접 수정하거나 GpRewrite로 AI 수정 요청
현재 파일 전체 기반 질문
1. <leader>gb (GpBufferChatNew)
2. 파일 전체가 채팅 컨텍스트로 포함됨
3. "이 코드에서 성능 병목이 될 수 있는 부분은?" 등 자유롭게 질문
무거운 작업 시 에이전트 전환
<leader>ga → ChatGPT4o 선택 " 복잡한 아키텍처 설계, 심층 분석
<leader>ga → ChatKimi-K2 선택 " 일반 작업, 로컬로 복귀 (API 비용 없음)
평소엔 로컬 ollama 에이전트로 돌리다가, 복잡한 아키텍처 설계나 심층 분석이 필요한 순간에만 API 에이전트로 갈아타는 식이다. 로컬 모델로 충분한 작업까지 API 비용을 쓸 이유는 없다.
응답 중단과 실행 취소
| 동작 | 방법 |
|---|---|
| 스트리밍 중단 | <leader>gs 또는 :GpStop |
| 인라인 편집 취소 | u (일반 undo) |
| 채팅 내 응답 중단 | <C-g>s |
상황별 에이전트 선택 기준
| 상황 | 권장 에이전트 |
|---|---|
| 일반 코딩, 로컬 작업 | ChatKimi-K2 / CodeKimi-K2 |
| 복잡한 리팩토링, 아키텍처 설계 | ChatGPT4o / CodeGPT4o |
| 빠른 단순 작업, 비용 절감 | ChatGPT4o-mini / CodeGPT4o-mini |
| 복잡한 추론, 수학/알고리즘 | ChatGPT-o3-mini / CodeGPT-o3-mini |