Neovim 0.10 까지는 nvim-lspconfig + 수동 설치된 서버 필요했어. Neovim 0.11 이 native API — vim.lsp.config() 로 서버 선언, vim.lsp.enable() 로 켜기 — 도입해서 기본 LSP 설정이 5 줄 일이 됐어. 복잡한 셋업엔 여전히 nvim-lspconfig 도움 되지만, 흔한 경로엔 필요 없어.
"LSP" 가 주는 것
Definition 으로 점프 (hover 에 K, 대부분 셋업의 gd, 또는 vim.lsp.buf.definition()).
References 찾기 — 심볼 사용된 모든 자리.
Rename — 프로젝트 전체에서 심볼 refactor.
Code action — 언어 서버가 제안하는 quick fix, auto-import, refactor.
Diagnostic — 인라인 에러와 warning.
Document symbol — 파일 outline.
Insert mode 의 signature help.
기본 매핑 (Neovim 0.11+)
설정 없이도 서버 attach 되자마자 작동: grn rename, grr references, gri implementation, gra code action, gO document symbol, K hover, Ctrl-S signature help (Insert mode), [d / ]d 이전 / 다음 diagnostic. Mnemonic — g for "go", r for "references", n for "name (rename)."
서버 설정
서버 binary install (패키지 매니저, brew, cargo, npm 등으로, 또는 mason.nvim 으로) 하고 config 에 선언. 인기 있는 세 개:
Mason — 서버용 옵셔널 패키지 매니저
mason.nvim 이 Neovim 안에서 :Mason 으로 LSP 서버, formatter, linter, DAP adapter install. 0.11+ 에선 옵셔널 — brew/apt 로 직접 install 가능 — 머신 사이 점프할 때 편리.
서버가 진실의 원천. Neovim LSP 클라이언트는 Python 이나 TypeScript 모름 — 그냥 LSP 프로토콜로 가리키는 어떤 서버든 말 걸어. Autocomplete 나 diagnostic 이 이상하게 느껴지면, 버그가 거의 항상 서버 설정에 있어, Neovim 에 있는 거 아냐. 서버 docs 읽어, Neovim 의 거 아니라.
K " hover documentation
grn " 심볼 rename
grr " references 찾기
gri " implementation 으로
gra " code action
gO " document symbol (outline)
Ctrl-S " signature help (Insert mode)
[d ]d " 이전 / 다음 diagnostic
Ctrl-W d " 커서에 diagnostic float
옵셔널 — 서버 install 위한 Mason·lua
-- lazy.nvim plugin spec 에 추가
{
"williamboman/mason.nvim",
cmd = "Mason",
build = ":MasonUpdate",
opts = {},
}
-- 그 다음 :Mason 으로 UI 열어 서버 install
매일 쓰는 언어 하나 골라 (Python, JavaScript, Lua). LSP 서버 install (예: pip install pyright, npm install -g typescript-language-server typescript, brew install lua-language-server). 해당하는 vim.lsp.config + vim.lsp.enable 라인을 init.lua 에 추가. 프로젝트 파일 열어. K (hover), grn (rename), gra (code action) 테스트. :LspInfo 로 서버 attach 됐는지 확인.
Progress
Progress is local-only — sign in to sync across devices.