neovim入门指南(四):LSP配置(下)

neovim入门指南(四):LSP配置(下)

💡 原文中文,约5700字,阅读约需14分钟。
📝

内容提要

本文是neovim入门指南的第三部分,介绍了LSP配置的其他方面,包括代码高亮、文件格式化和LSP相关的UI美化。

🔎

延伸解读

诊断信息的美化与性能权衡

文章通过 vim.diagnostic.config 配置错误提示的图标和虚拟文本,并设置 update_in_insert = true 以在插入模式下实时更新。但作者也指出,这可能会影响性能。读者在配置时需根据自身机器性能和编辑习惯,在实时反馈与流畅度之间做出权衡。

代码高亮:tree-sitter 的安装与语言支持

tree-sitter 是一个用 Rust 编写的高性能代码高亮工具,能显著提升 Neovim 的高亮效果。安装插件后,需通过 TSInstall 命令为每种语言单独安装高亮支持,例如 TSInstall rust。这意味着高亮效果依赖于语言解析器的安装,读者需按需配置。

格式化工具:从 null-ls 迁移到 none-ls

null-ls 已归档不再维护,其分支 none-ls 继承了原有功能并兼容旧配置。迁移时只需将依赖地址从 jose-elias-alvarez/null-ls.nvim 改为 nvimtools/none-ls.nvim。之后可通过 Mason 安装具体格式化工具,如 stylua,并在配置中引用。这为读者提供了平滑的升级路径。

lspsaga:增强 LSP 体验的插件集

lspsaga 提供了 Finder、Code Action、浮动终端等多项功能,旨在美化和增强原生 LSP 体验。例如,Finder 类似 VS Code 的符号查看界面,Code Action 提供带预览的代码改进建议。读者可通过快捷键绑定快速调用这些功能,但需注意插件更新可能导致配置变化。

❓

Q&A

如何自定义 Neovim 中 LSP 错误和警告的图标?

可以通过 vim.diagnostic.config 配置提示文本,并使用 vim.fn.sign_define 为每种诊断类型定义图标。例如,在 lsp/ui.lua 中设置 signs 表,然后循环调用 sign_define 来替换默认的字母图标。

Neovim 中如何安装 tree-sitter 并启用特定语言的代码高亮?

安装 tree-sitter 插件后,使用 TSInstall 命令安装具体语言的高亮,例如 TSInstall rust 安装 Rust 高亮,或使用 TSUpdate rust 更新。

null-ls 已归档,应该用什么替代?如何配置?

可以使用 none-ls 替代,它是 null-ls 的 fork 并保持兼容。只需将依赖地址从 jose-elias-alvarez/null-ls.nvim 改为 nvimtools/none-ls.nvim,然后通过 Mason 安装格式化工具(如 stylua),并在配置中设置 sources。

如何美化 Neovim 的自动补全菜单,使其显示类型图标?

安装 lspkind 插件,在 lsp/kind.lua 中配置 lspkind.init 设置 symbol_map 定义各类别的图标,然后在 cmp 的 formatting 选项中调用 lspkind.cmp_format 来应用图标。

lspsaga 插件提供了哪些主要功能来增强 LSP 体验?

lspsaga 提供 Finder(符号搜索 UI)、Diagnostic(诊断跳转与浮动显示)、Peek Definition、悬停、重命名、调用层次、Code Action(带预览的代码操作 UI)、LightBulb、面包屑、大纲、实现查看、浮动终端等功能。

如何在 Neovim 中绑定快捷键来使用 lspsaga 的 Code Action?

在 keybindings 中,将原有的 vim.lsp.buf.code_action() 替换为 :Lspsaga code_action<CR>,例如 mapbuf("n", "<leader>ca", ":Lspsaga code_action<CR>", opt)。

🏷️

标签

➡️

继续阅读