Skip to content
Vim

LSP, Completion и диагностика

Получение IDE-возможностей (автодополнение, go-to-definition, диагностика) через LSP.

#lsp#completion#diagnostics#neovim

Code

vim
" --- Neovim native LSP (built-in client) ---
" Install servers: npm i -g typescript-language-server pyright vscode-langservers-extracted
:help lsp

lua << EOF
local lsp = require("lspconfig")
lsp.ts_ls.setup{}        -- TypeScript/JavaScript
lsp.pyright.setup{}      -- Python
lsp.lua_ls.setup{}       -- Lua
lsp.rust_analyzer.setup{} -- Rust
EOF

" Keymaps (set in on_attach)
nnoremap gd        <cmd>lua vim.lsp.buf.definition()<CR>
nnoremap K         <cmd>lua vim.lsp.buf.hover()<CR>
nnoremap gr        <cmd>lua vim.lsp.buf.references()<CR>
nnoremap <leader>rn <cmd>lua vim.lsp.buf.rename()<CR>
nnoremap <leader>ca <cmd>lua vim.lsp.buf.code_action()<CR>
nnoremap <leader>d  <cmd>lua vim.diagnostic.open_float()<CR>

" Completion: nvim-cmp or native (Neovim 0.11+)
set completeopt=menuone,noselect

" Diagnostics
lua << EOF
vim.diagnostic.config({
  virtual_text = true,
  signs = true,
  underline = true,
})
EOF

" Format on save (Neovim 0.8+)
autocmd BufWritePre *.lua,*.ts,*.py lua vim.lsp.buf.format({ async = false })