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
Neovimgp.nvimAI 코딩개발 도구생산성