같은 언어, 다른 런타임
Neovim은 2014년에 시작된 Vim의 fork야. 코드베이스 현대화, Lua를 first-class config 언어로 임베드, async 아키텍처 채용이 목적이었어. 실용적으로 거의 모든 편집 지식이 호환돼 — 이 퀘스트에서 배울 모든 motion, operator, text object가 둘 다에서 똑같이 작동해. 차이는 config 스토리와 plugin 생태계에서 나와.
같은 부분
모달 편집, motion, text object, register, mark, macro, : command line, Vimscript 자체 — 전부 동일. Vim에서 ciw를 익히면 Neovim에서도 똑같이 작동해. 머슬 메모리가 공유된다는 게 핵심 포인트야.
Neovim이 추가한 부분
- Lua configuration —
init.lua가 진짜 프로그래밍 언어야. table, closure, stdlib 다 있어. Vimscript의 특이한 DSL이 아니라. - 내장 LSP 클라이언트 — plugin 한 개도 없이 코드 인텔리전스 (rename, definition, hover docs).
- 내장 Treesitter — AST 기반 하이라이팅 + 구조적 text object.
- Async 아키텍처 — UI를 안 얼리고 백그라운드에서 plugin이 돌아가.
- 현대적인 default —
backspace정상 작동, syntax on, filetype detection on, true colors 인식.
현재 버전 (2026 기준)
Neovim 0.11이 stable 라인. Vim 9.1+가 upstream의 현재 버전. 둘 다 활발히 유지돼. Neovim이 현대적 기능 (LSP, async, Lua) 쪽으로 더 빨리 가고, Vim은 클래식한 느낌을 더 보존해.
Neovim 0.11 알아둘 만한 하이라이트
vim.lsp.config()+vim.lsp.enable()로 LSP 설정 — 기본 사용에는nvim-lspconfigplugin이 더 이상 필요 없어.- 기본 LSP 매핑:
grn(rename),grr(references),gri(implementation),gra(code action). 서버만 attach되면 그냥 작동. - Async treesitter 하이라이팅 — 큰 파일에서 UI 멈춤 X.
completeopt+=fuzzy로 fuzzy completion.
이 퀘스트의 권장 사항: Neovim 깔아. 트랙 1–3은 둘 다에서 작동하고, 트랙 4부터는 Neovim 전용 기능 (Lua config, native LSP, lazy.nvim)에 의존해.
vim밖에 없는 서버에 갇히면 편집 스킬은 100% 그대로 적용돼.