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

.vimrc

需要说明的是,.clang-format 不能直接转换成 .vimrc。

原因是它们负责的事情不同:

  • .clang-format:定义代码格式规则(缩进、括号、换行、空格等),由 clang-format 程序执行。
  • .vimrc:配置 Vim 编辑器(按键、缩进显示、插件、主题等)。

正确的做法是:

在 .vimrc 中配置 Vim 使用 clang-format。

方案一:最推荐(保存时自动格式化)

"==========基本设置==========set expandtab set tabstop=4set softtabstop=4set shiftwidth=4set number set relativenumber set autoindent set smartindent set nowrap syntax on filetype plugin indent on "==========clang-format==========autocmd FileType c,cpp,objc,objcpp nnoremap<buffer><F3>:%!clang-format<CR>autocmd BufWritePre*.cpp,*.cc,*.cxx,*.hpp,*.h,*.c silent!execute'%!clang-format'

效果:

  • F3:格式化当前文件
  • Ctrl+S(保存):自动格式化

方案二:Visual 模式格式化

vnoremap f :!clang-format

选中一段代码:

V

然后:

\f

即可格式化选中的内容。

方案三:使用 clang-format 官方 Vim 插件(推荐)

LLVM 自带了 Vim 插件。

例如:

let g:clang_format#auto_format = 0
augroup ClangFormat
autocmd!
autocmd FileType c,cpp,cuda nnoremap f :ClangFormat
augroup END

按:

\f

即可格式化。

这个插件支持:

  • 只格式化选中的代码
  • 保留光标位置
  • 不需要 %!clang-format

体验比直接调用命令好很多。

方案四:如果你用的是 Neovim + clangd(最推荐)

如果已经安装了 clangd,可以直接使用 LSP 的格式化能力:

nnoremap f lua vim.lsp.buf.format()

或者自动格式化:

autocmd BufWritePre.cpp,.hpp lua vim.lsp.buf.format()

这里的格式规则仍然来自项目中的 .clang-format 文件,因此团队成员可以共享同一套格式,而不需要每个人维护自己的 Vim 配置。

我建议的配置(适合你的开发环境)

根据之前的交流,你主要使用 Neovim + clangd + CMake + C++/CUDA,我建议采用下面这套:

  • 项目根目录放一份 .clang-format(团队共享)
  • .vimrc 或 init.lua 不写任何格式规则,只负责调用 clang-format
  • 使用 f 手动格式化
  • 保存时自动格式化(可根据个人习惯开启或关闭)
  • clangd、clang-format、clang-tidy 使用同一 LLVM 版本(例如 LLVM 20),避免格式和诊断不一致

这种方式也是目前绝大多数现代 C++ 项目(包括 LLVM、Chromium、许多企业项目)采用的方案。

http://www.jsqmd.com/news/1233226/

相关文章:

  • OpenRouter API聚合平台:简化大模型接入与管理的终极方案
  • 智能手机市场格局演变:千元机为何逐渐消失?
  • C++ AST解析实战:使用cppast库简化代码分析与度量工具开发
  • 基于DeepLabV3+的市政管道缺陷智能检测技术解析
  • Codex Skill深度解析:8个必装技能让AI编程助手从问答机变执行者
  • 九江桶装水配送哪家及时? - 中媒介
  • C++实现频谱图绘制:从FFT原理到工程实践全解析
  • 74HC595芯片原理与Arduino应用实战
  • Python数据分析入门:NumPy、pandas与可视化实战
  • 聊城市茌平县2026最新黄金回收门店及联系方式指南 黄金回收白银回收铂金回收店铺TOP5排行榜 - 大熊猫898989
  • 工业5G专网下的边缘节点高吞吐与RedCap轻量化接入代码实践
  • Java开发者面试突围:构建三位一体能力体系,应对场景化面试与AI浪潮
  • AI工程化如何破解软件开发不可能三角
  • 原生三件套实现旅游网站:HTML+CSS+JavaScript实战指南
  • 计算机毕业设计之网上购书系统
  • STM32流水灯开发实战:从基础到进阶
  • AI认证体系全解析:从入门到精通的路径指南
  • 大语言模型性能的决定因素与优化策略
  • SCI 3/4区论文写作指南:YOLO与RT-DETR应用研究的创新突破
  • 无服务器数据库连接池“炸裂”:Spring Boot 按需计费下的连接风暴与优雅治理
  • 深入解析TMS320F2802x I2C寄存器:从时钟配置到FIFO优化实战
  • 梅州市五华县2026最新黄金回收门店及联系方式指南 黄金回收白银回收铂金回收店铺TOP5排行榜 - 盛世金银回收
  • 如何使用sider
  • MCP双Token认证体系:AI平台零信任模型服务的工程实践
  • Luma AI单眼视频生成:从原理到电商短视频实战指南
  • 基金估值跟踪 API 的调用频率限制与用量边界详解
  • LangChain技术栈核心组件解析与应用实践
  • Kotlin Notebook免费替代方案与使用技巧
  • Kylix v3.3.0核心特性:请求体绑定、JWT验证与OpenAPI集成
  • RTX 5090传闻解析:128GB显存如何重塑本地AI与深度学习格局