当前位置: 首页 > news >正文

【LunarVim】CMake LSP配置

在 LunarVim 中为 CMakeLists.txt 文件启用代码提示(如补全和语义高亮),需要安装支持 CMake 的 LSP(语言服务器)和适当的插件。以下是完整配置指南:

1、配置流程

1.1 安装cmake-language-server

通过 Mason 安装 cmake-language-server
在 LunarVim 中运行:

:Mason

Mason

找到 cmake-language-server,按下 i 安装

安装完成后,它会出现在 ~/.local/share/nvim/mason/bin/

✅ 安装完之后,再验证:

~/.local/share/nvim/mason/bin/cmake-language-server --version
# cmake-language-server 0.1.11

应该会输出版本号或 help 信息,例如cmake-language-server 0.1.11。

1.2 配置

在配置文件config.lua中添加下面的配置

-- 不跳过 cmake LSP
lvim.lsp.automatic_configuration.skipped_servers = vim.tbl_filter(function(server) return server ~= "cmake" end,lvim.lsp.automatic_configuration.skipped_servers
)
-- 配置 cmake-language-server
local lsp_manager = require("lvim.lsp.manager")
lsp_manager.setup("cmake", {-- cmd = { "cmake-language-server" },-- 把 cmd 显式写成 Mason 安装路径cmd = { vim.fn.stdpath("data") .. "/mason/bin/cmake-language-server" },filetypes = { "cmake" },root_dir = require("lspconfig.util").root_pattern("CMakeLists.txt", ".git", "build"),init_options = {buildDirectory = "build"}
})
-- 确保 CMakeLists.txt 正确识别为 cmake 文件类型
vim.cmd [[autocmd BufRead,BufNewFile CMakeLists.txt set filetype=cmake
]]

这里的 vim.fn.stdpath("data") 等价于 ~/.local/share/nvim,是跨平台写法。

1.3 重启 LunarVim:

保存 config.lua 后,重启LunarVim:

:LvimReload

🔍 可以用 :LspInfo 检查 cmake LSP 是否启动成功。打开 CMakeLists.txt,执行:

:LspInfo

LspInfo

1.4 效果(代码提示)

CMake代码提示

2、注意事项

🚨 通过 Mason 安装了 LSP,但系统找不到它(因为 它不在 $PATH
✅ 解决方式 1(推荐):显式设置 cmd 路径

cmd = { vim.fn.stdpath("data") .. "/mason/bin/cmake-language-server" }

✅ 解决方式 2:把 Mason 的 bin 加到 $PATH
可以在 ~/.bashrc~/.zshrc 添加:

export PATH="$HOME/.local/share/nvim/mason/bin:$PATH"
http://www.xdnf.cn/news/340903.html

相关文章:

  • 基于Kubernetes的Apache Pulsar云原生架构解析与集群部署指南(上)
  • python 上海新闻爬虫
  • Baumer工业相机堡盟工业相机的工业视觉中为什么偏爱“黑白相机”
  • 【前端基础】8、CSS的选择器
  • HTML10:iframe内联框架
  • AI时代企业应用系统架构的新思路与CIO变革指南
  • 如何使用极狐GitLab 软件包仓库功能托管 helm chart?
  • 【RAG技术全景解读】从原理到工业级应用实践
  • Redis 8.0正式发布,再次开源为哪般?
  • 基于STM32、HAL库的CP2102-GMR USB转UART收发器 驱动程序设计
  • keep the pipe Just full But no fuller - BBR 与尘封 40 年的求索
  • ETL介绍及kettle等工具学习
  • 科学发现 | 源于生活的启示与突破计划的创新
  • android-ndk开发(9): undefined reference to `__aarch64_ldadd4_acq_rel` 报错分析
  • [数据库之十一] 数据库索引之联合索引
  • 大模型调优方法与注意事项
  • 【Java 专题补充】流程控制语句
  • RPC、gRPC和HTTP的区别
  • Java大师成长计划之第15天:Java线程基础
  • uniapp|实现多终端视频弹幕组件、内容轮询、信息表情发送(自定义全屏半屏切换、弹幕启用)
  • BGP基础
  • 抛物线法(二次插值法)
  • 《AI大模型应知应会100篇》第52篇:OpenAI API 使用指南与最佳实践
  • 65.Three.js案例-使用 MeshNormalMaterial 和 MeshDepthMaterial 创建 3D 图形
  • flutter 的热更新方案shorebird
  • Vue3项目目录重命名指南
  • Kotlin Coroutine与Retrofit网络层构建指南
  • 结合Splash与Scrapy:高效爬取动态JavaScript网站
  • SGLang 实战介绍 (张量并行 / Qwen3 30B MoE 架构部署)
  • C++ set替换vector进行优化