需要说明的是.clang-format 不能直接转换成 .vimrc。原因是它们负责的事情不同.clang-format定义代码格式规则缩进、括号、换行、空格等由 clang-format 程序执行。.vimrc配置 Vim 编辑器按键、缩进显示、插件、主题等。正确的做法是在 .vimrc 中配置 Vim 使用 clang-format。⸻方案一最推荐保存时自动格式化基本设置set expandtab set tabstop4set softtabstop4set shiftwidth4set number set relativenumber set autoindent set smartindent set nowrap syntax on filetype plugin indent on clang-formatautocmd FileType c,cpp,objc,objcpp nnoremapbufferF3:%!clang-formatCRautocmd BufWritePre*.cpp,*.cc,*.cxx,*.hpp,*.h,*.c silent!execute%!clang-format效果F3格式化当前文件CtrlS保存自动格式化⸻方案二Visual 模式格式化vnoremap f :!clang-format选中一段代码V然后\f即可格式化选中的内容。⸻方案三使用 clang-format 官方 Vim 插件推荐LLVM 自带了 Vim 插件。例如let g:clang_format#auto_format 0augroup ClangFormatautocmd!autocmd FileType c,cpp,cuda nnoremap f :ClangFormataugroup 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、许多企业项目采用的方案。