当前位置: 首页 > 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.dtcms.com/a/177963.html

相关文章:

  • 人协同的自动化需求分析
  • 【SQLSERVER】Ubuntu 连接远程 SQL Server(MSSQL)
  • 搭建和优化CI/CD流水线
  • [人机交互]设计,原型建立和构造
  • 数字化驱动下的智慧物流与零售创新:全流程无人仓与定制开发开源AI智能名片S2B2C商城小程序的协同实践
  • RHEL8搭建FOU隧道
  • 【redis】集群模式
  • 【Linux】Linux工具(1)
  • easyexcel导出动态写入标题和数据
  • 【开源解析】基于Python的智能文件备份工具开发实战:从定时备份到托盘监控
  • 为了摸鱼和吃瓜,我开发了一个网站
  • es 里的Filesystem Cache 理解
  • 使用thymeleaf模版导出swagger3的word格式接口文档
  • 视觉图像处理及多模态融合初探
  • SpringBoot 讯飞星火AI WebFlux流式接口返回 异步返回 对接AI大模型 人工智能接口返回
  • leetcode 242. Valid Anagram
  • 【前端基础】9、CSS的动态伪类(hover、visited、hover、active、focus)【注:本文只有几个粗略说明】
  • 四、Hadoop 2.X vs 3.X:特性、架构与性能全解析
  • ubuntu yolov5(c++)算法部署
  • [特殊字符]【实战教程】用大模型LLM查询Neo4j图数据库(附完整代码)
  • 5、开放式PLC梯形图编程组件 - /自动化与控制组件/open-plc-programming
  • 秋招准备——2.跨时钟相关
  • 室内无人机自主巡检解决方案-自主方案
  • STM32-模电
  • Spring Cloud:概述,服务注册和服务发现,多机部署和负载均衡
  • 认识守卫-以及简单的示例和装饰器
  • 如何在macOS上通过SSHFS挂载远程文件系统
  • 驱动开发硬核特训 · Day 30(下篇): 深入解析 lm48100q I2C 音频编解码器驱动模型(基于 i.MX8MP)
  • Redis最新入门教程
  • 静态BFD配置