kickstart.nvim — 공식 starter
nvim-lua/kickstart.nvim 이 단일, 잘 코멘트된 init.lua (약 800 줄, 매 섹션 설명) 로 LSP, completion, treesitter, telescope, gitsigns, mini.nvim, sane keymap 셋업. Neovim core contributor 가 유지하고 Neovim 0.11+ 위해 update. 프레임워크 아냐 — 블랙박스로 import 하지 않고 읽고 수정하는 starter config.
Kickstart 언제 사용
- Neovim 완전 신규고 5 분에 작동하는 셋업 원함.
- 새 머신 셋업 중이고 config 처음부터 다시 derive 안 하고 싶음.
- 누군가에게 Neovim 가르치고 알려진-good 베이스에 두고 싶음.
채택할 때 매 줄 읽어. 매 chunk 가 뭐 하고 왜 하는지 코멘트. 학습 config 로 다뤄, dependency 가 아니라.
성능 — 갖고 있는 budget
현대 Neovim + lazy.nvim 이 100ms 이하로 시작해야 해. 먼저 측정, 두 번째 최적화:
:Lazy profile— 총 시작 시간과 plugin 별 분석.nvim --startuptime /tmp/startup.log— 밀리초 레벨 풀 시작 trace.
실제로 시간 절약하는 lazy-loading 패턴
좋은 lazy-loading 이 무거운 plugin 을 필요할 때까지 지연. 나쁜 lazy-loading 이 dependency 가 사용 전에 안 로드돼서 버그 만듦. 안전한 패턴은 plugin 의 사용에 매치되는 특정 trigger 에 lazy-load:
event = "BufReadPost"— 파일 열 때 로드. 편집 시간 plugin (gitsigns, treesitter, comment plugin) 에 사용.event = "InsertEnter"— 첫 Insert mode 에 로드. Completion (nvim-cmp, autopairs) 에 사용.event = "VeryLazy"— UI 준비 후 로드. 즉시 있을 필요 없는 plugin (which-key, lualine, nvim-surround) 에 사용.cmd = "FugitiveStatus"— 특정 명령에 로드. 가끔 쓰는 무거운 plugin (fugitive, Mason) 에 사용.ft = { "python", "lua" }— 특정 filetype 만 로드. 언어별 plugin 에 사용.keys = { ... }— 키 처음 누를 때 로드.
1 년 내에 작성할 커스텀 Lua
Neovim API 가 충분히 풍부해서 대부분 개인 자동화가 5–15 줄 Lua. 계속 잡을 세 패턴:
vim.api.nvim_create_autocmd— 이벤트 (파일 열림, 저장, 커서 hold) 에 반응.vim.api.nvim_create_user_command— 자기:Command정의.vim.keymap.set+ 커스텀 함수 — Lua 로 쓸 수 있는 뭐든 키에 바인드.
Neovim 로드맵 (앞 살펴보기)
- Neovim 0.12 (진행 중) —
vim.pack통한 내장 plugin 매니저, 멀티-커서 지원, 개선된 진행 메시지, first-class 스니펫 시스템vim.snippet. - Neovim 0.13+ — 구조화된 동시성 (
vim.async), 멀티 buffer 편집, 오늘 plugin 필요한 더 많은 native 기능.
최신 unstable 쫓지 마. 최신 stable (2026 의 0.11.x) 에 머물러; 0.12.0 떨어지고 plugin 생태계 따라잡으면 upgrade.
Endgame: 아무것도 outgrown 안 한 config. 1, 2 년 후
init.lua 가 갖는 모든 진짜 선호 반영. Plugin 은 부재 느껴서 추가; 매핑은 long form 두 번 입력해서 존재. 그게 손에 맞는 에디터. Vim+tmux 가 그 config 에서 평생 ROI 벌어.