개요


LazyVim = Neovim 위에 얹는 설정 배포판(distribution). Neovim(엔진) + lazy.nvim(플러그인 매니저) + LSP/treesitter/telescope가 미리 구성돼 있어, init.lua를 직접 짜지 않아도 즉시 IDE급으로 동작한다.

  • 순정 Vim 기본기(01. Vim 기본)는 그대로 통한다. LazyVim은 그 위에 자동완성, 파일탐색, git 연동을 얹은 것.
  • 표준 Neovim/lua 설정 패턴(vim.keymap.set, opts)을 그대로 써서 프레임워크 종속 문법이 적다.

설치


# 의존: neovim 0.9+, git, ripgrep, fd, (선택) lazygit, node
brew install neovim ripgrep fd lazygit
 
# 기존 nvim 폴더 백업 (관례)
mv ~/.config/nvim{,.bak} 2>/dev/null
mv ~/.local/share/nvim{,.bak} 2>/dev/null
 
# 스타터 클론 후 .git 제거 (내 dotfiles로 관리)
git clone https://github.com/LazyVim/starter ~/.config/nvim
rm -rf ~/.config/nvim/.git
 
nvim   # 첫 실행에 플러그인 자동 설치
  • Ghostty는 Nerd Font가 내장이라 아이콘이 바로 나온다. 다른 터미널이면 Nerd Font 설치가 필요하다.
  • node는 일부 LSP에 필요하다. nvm 있으면 nvm install --lts.

디렉터리 구조


~/.config/nvim/
├── init.lua                 # 진입점
├── lua/config/
│   ├── options.lua          # Neovim 옵션
│   ├── keymaps.lua          # 커스텀 키맵
│   ├── autocmds.lua         # 자동 명령
│   └── lazy.lua             # 플러그인 매니저 설정
├── lua/plugins/             # 커스텀 플러그인 스펙 (여기에 추가/override)
└── lazyvim.json             # LazyExtras 선택 기록
  • 커스터마이징은 lua/plugins/에 파일을 추가하면 lazy.nvim이 자동 병합한다. 기존 것을 지우는 게 아니라 override.

핵심 키바인딩 (leader = Space)


스페이스를 누르고 기다리면 which-key 메뉴가 떠서 다음 키 목록을 보여준다. 다 못 외워도 메뉴 따라가면 된다.

파일/검색

  • <leader><space> = 파일 찾기 (telescope)
  • <leader>/ = 프로젝트 전체 grep (ripgrep)
  • <leader>fr = 최근 파일
  • <leader>e = 파일 탐색기 (neo-tree)

버퍼/창

  • Shift+H / Shift+L = 이전/다음 버퍼
  • <leader>bd = 현재 버퍼 닫기
  • Ctrl+h/j/k/l = 창 간 이동

LSP/코딩

  • gd = 정의로 점프
  • K = 문서(hover) 보기
  • <leader>cr = 심볼 이름 변경(rename)
  • <leader>ca = 코드 액션(quick fix 등)
  • ]d / [d = 다음/이전 진단(diagnostic)
  • <leader>uf = 저장 시 자동포맷 토글

도구

  • <leader>gg = lazygit
  • Ctrl+/ = 현재 위치에 터미널 토글
  • s = flash 점프 (s + 글자로 화면 내 빠른 이동)

LazyExtras — 언어 지원 켜기


LazyExtras = 미리 만들어진 기능 묶음(“확장”). 켜면 해당 언어의 LSP + 자동완성 + treesitter + 포매터를 한 번에 설치/설정한다.

:LazyExtras
  • 메뉴에서 스페이스로 토글, 재시작하면 Mason이 서버 설치.
  • 직무 스택 기준 켤 것: lang.terraform, lang.python, lang.yaml, lang.docker, lang.json, lang.git, lang.markdown
    • terraform → terraform-ls (자동완성, hover, 저장 시 fmt)
    • python → pyright + ruff
    • yaml → yaml-language-server (k8s 매니페스트에 유용)
  • 선택은 lazyvim.json에 기록돼 dotfiles로 따라간다.

관리 명령


  • :Lazy = 플러그인 대시보드 (설치/업데이트/상태)
  • :Lazy sync = 플러그인 일괄 업데이트
  • :Mason = LSP/린터/포매터 설치 관리 (:MasonLog로 실패 로그)
  • :LazyExtras = 기능 묶음 관리
  • :LazyHealth = 의존성/설정 상태 점검
  • :LspInfo = 현재 파일에 붙은 LSP 확인

lazygit 연동


LazyVim은 lazygit을 번들하지 않고 연동만 한다. brew install lazygit<leader>gg로 열린다.

lazygit 안에서 빠른 커밋 흐름:

  • a = 전체 스테이지 (개별은 파일에서 스페이스)
  • c = 커밋 (메시지 입력 후 엔터)
  • P = 푸시, p = 풀
  • ? = 도움말

References