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

nvim cspell

太好了!下面是为你量身定制的 完整 Neovim + C++ 老项目拼写检查方案总结,支持 离线安装全代码拼写检查(包括变量名)命令式集成,并兼容 LazyVim 架构。


✅ Neovim 拼写检查解决方案(全面 + 离线可用)


🎯 功能目标

在 Ubuntu + Neovim(LazyVim)中实现:

  • ✅ 检查 注释 / 字符串 / 变量名 / 函数名 拼写错误
  • ✅ 手动运行 :SpellAudit 查看结果
  • 离线可用
  • ✅ 项目级忽略词词典支持(.cspell.json
  • ✅ 兼容老旧 C++ Makefile 项目

🧱 基础工具:使用 cspell

cspell 是一个 CLI 拼写检查工具,跨平台、可离线、支持源码级拼写审查。


🧩 步骤一:离线安装 cspell

在联网机器上执行:

npm install -g cspell

然后将安装目录复制到目标机器:

# 查询全局安装路径
npm root -g
npm bin -g

将这两个目录(通常是 ~/.npm-global/lib/node_modules~/.npm-global/bin)复制到 Ubuntu 离线目标机相应目录,然后设置:

export PATH="$HOME/.npm-global/bin:$PATH"

确认:

cspell --version

🧩 步骤二:添加 Neovim 命令 :SpellAudit

创建文件:

nvim ~/.config/nvim/lua/plugins/cspell-audit.lua

填入内容:

-- 为 LazyVim 添加 SpellAudit 命令
vim.api.nvim_create_user_command("SpellAudit", function()local cmd = "cspell '**/*.{c,cpp,h,hpp}' --no-color"vim.cmd("tabnew") -- 新标签页vim.cmd("term " .. cmd) -- 执行 cspell
end, { desc = "Run cspell on project" })

⚠️ 无需 return,也无需注册插件名,LazyVim 会自动加载。


🧩 步骤三:项目拼写词典 .cspell.json

在项目根目录创建 .cspell.json

{"version": "0.2","language": "en","words": ["argc","argv","util","cmd","ptr","ctx","bool","recv","init","uint","todo","stdin","stdout","stderr"],"ignorePaths": ["build","bin","third_party","**/*.o","**/*.a"],"files": ["**/*.{c,cpp,h,hpp}"]
}

✅ 可以根据你项目常用缩写随时添加单词,防止误报。


🧪 使用方法

在项目目录中运行 Neovim,执行命令:

:SpellAudit

即可打开新标签页终端,显示拼写错误:

src/main.cpp:42:10 - Unknown word (recieve)
src/net.h:23:15 - Unknown word (tehCount)

📌 可选增强(按需再做)

功能实现建议
跳转拼写错误结合 quickfix / Telescope
自动保存时检查autocmd BufWritePost *.cpp silent! SpellAudit
结果转诊断显示可用 vim.diagnostic.set() 转换(可继续要我帮你实现)

✅ 文件结构一览

~/.config/nvim/
└── lua/└── plugins/└── cspell-audit.lua     ← 拼写命令
/project-root/
└── .cspell.json                ← 项目词典

✅ 离线使用说明

只需确保:

  • node + npm 安装过一次(可用 nvm 安装后打包)
  • cspellbinlib 被复制到目标 Ubuntu
  • PATH 中包含 cspell 所在目录

你在完全离线状态下,也能运行 :SpellAudit 扫描拼写错误。


是否还需要我:

  • 帮你把 cspell 的错误转为 Neovim Quickfix?
  • 或集成进 Trouble.nvim / Telescope?

可以继续扩展 💪

http://www.dtcms.com/a/301901.html

相关文章:

  • Nginx HTTP 反向代理负载均衡实验
  • NAT地址转换,静态NAT,高级NAT,NAPT,easy IP
  • 【Linux指南】Linux粘滞位详解:解决共享目录文件删除安全隐患
  • GaussDB 开发基本规范
  • XML Expat Parser:深入解析与高效应用
  • Python 列表内存存储本质:存储差异原因与优化建议
  • 第4章唯一ID生成器——4.2 单调递增的唯一ID
  • 【Android】卡片式布局 滚动容器ScrollView
  • Go语法入门:变量、函数与基础数据类型
  • 飞算科技重磅出品:飞算 JavaAI 重构 Java 开发效率新标杆
  • JAVA后端开发——用 Spring Boot 实现定时任务
  • 【Spring】Spring Boot启动过程源码解析
  • 鸿蒙打包签名
  • HarmonyOS 6 云开发-用户头像上传云存储
  • 前端工程化常见问题总结
  • Windows|CUDA和cuDNN下载和安装,默认安装在C盘和不安装在C盘的两种方法
  • AI技术革命:产业重塑与未来工作范式转型。
  • 深入解析MIPI C-PHY (四)C-PHY物理层对应的上层协议的深度解析
  • 齐护Ebook科技与艺术Steam教育套件 可图形化micropython Arduino编程ESP32纸电路手工
  • 湖南(源点咨询)市场调研 如何在行业研究中快速有效介入 起头篇
  • Triton编译
  • 【n8n教程笔记——工作流Workflow】文本课程(第一阶段)——5.5 计算预订订单数量和总金额 (Calculating booked orders)
  • Rouge:面向摘要自动评估的召回导向型指标——原理、演进与应用全景
  • 分表分库与分区表
  • Android启动时间优化大全
  • 蛋白质反向折叠模型-ProteinMPNN安装教程
  • 学习日志20 python
  • 【unitrix】 6.18 二进制小数特质(t_decimal.rs)
  • EPOLLET 边缘触发模式深度解析
  • 抗辐照芯片在低轨卫星星座CAN总线通讯及供电系统的应用探讨