1. 配置 VS Code 的缩进规则
设置全局或项目级的缩进规则,确保后续输入的代码符合规范。
步骤:
- 打开 VS Code 设置:
- 快捷键:Ctrl + ,(Windows/Linux)或 Cmd + ,(Mac)。
- 手动路径:File > Preferences > Settings。
- 搜索 Editor: Insert Spaces,勾选该选项(强制用空格代替 Tab)。
- 搜索 Editor: Tab Size,设置缩进空格数(如 2 或 4)。
- 搜索 Editor: Detect Indentation,取消勾选(避免自动检测旧文件的缩进风格)。
2. 自动格式化现有文件
使用 VS Code 的格式化工具批量修复现有文件的缩进混乱问题。
方法 1:使用内置格式化功能
- 打开需要格式化的文件。
- 执行格式化:
- 快捷键:Shift + Alt + F(Windows/Linux)或 Shift + Option + F(Mac)。
- 右键菜单:在编辑器中右键,选择 Format Document。
- 如果提示选择格式化工具,推荐使用:
- C/C++ 扩展的 Clang-Format(需安装 C/C++ 扩展)。
- Prettier(需安装 Prettier 扩展)。
安装 clang-format
# 1. root 安装
# 添加 EPEL 仓库(如未添加)
sudo yum install -y epel-release
# 安装 LLVM 工具链(包含 clang-format)
sudo yum install -y llvm-toolset-12.0.1-clang
# 2. 无root安装
# 创建本地安装目录
mkdir -p ~/local/llvm
cd ~/local/llvm
# 下载 LLVM 12.0.0 预编译包(兼容 CentOS 7.9)
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-12.0.0/clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz
# 解压并设置环境变量
tar -xvf clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz
echo 'export PATH=$PATH:~/local/llvm/clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-20.04/bin' >> ~/.bashrc
source ~/.bashrc
我的安装方法:
$ wget https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz
说明:LLVM 14.0 对 CentOS 7.9 的兼容性更好(避免 GLIBC 版本冲突)。
解压:
@J3$ cd /home/wangjl/Downloads/
$ tar -xvf clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz
# 13:24->13:26
移动
$ mv clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04 ~/soft/
写配置文件:
$ vim ~/.bashrc # 添加1行
# for clang-format 14.0.0
export PATH=$PATH:/home/wangjl/soft/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04/bin/
$ source ~/.bashrc
测试:
$ ls -lth ~/soft/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04/bin/
$ ~/soft/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04/bin/clang-format --version
clang-format version 14.0.0
$ clang-format --version #输出同上
但是主命令会报错:
$ clang --version
clang: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by clang)
$ which clang-format
/home/wangjl/soft/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04/bin/clang-format
2. 配置文件
项目根目录下的 .vscode/settings.json 文件
{
"clang-format.executable": "/home/wangjl/soft/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04/bin/clang-format",
# "editor.formatOnSave": true,
}
3. 使用方法
- 右击文件,选择 格式化文档/"Format Document"
- 或 快捷键 ctrl+Alt+F on Win
测试表明:它会修改 .h 文件的顺序,这可能导致某些变量没声明之类的错误,如:
src/hla_estimation.cpp:172:5: error: ‘Get_Exon_Mode’ was not declared in this scope
172 | Get_Exon_Mode(hh, hlacnt, hcnt, lcnt, lmode, maxlm);
到底该不该使用呢?
方法 2:通过命令行工具批量处理
安装 clang-format 或 astyle,在终端中运行:
# 使用 clang-format 格式化所有 C++ 文件
find . -name "*.cpp" -o -name "*.h" | xargs clang-format -i --style=LLVM
# 使用 astyle(需安装)
astyle --style=linux --indent=spaces=4 --suffix=none *.cpp *.h
3. 强制统一缩进字符(替换 Tab 为空格)
如果文件中有遗留的 Tab 字符,可以手动替换:
打开文件,按 Ctrl + H 打开替换面板。
在搜索框中输入 \t(Tab 的正则表达式)。
在替换框中输入空格(如 4 个空格)。 4 勾选 Use Regular Expression,点击 Replace All。
4. 配置项目级规则(防止未来混乱)
(1) 添加 .editorconfig 文件
在项目根目录创建 .editorconfig,内容如下:
root = true
[*]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
(2) 配置 clang-format 文件
在项目根目录创建 .clang-format,示例配置:
BasedOnStyle: LLVM
IndentWidth: 4
UseTab: Never
5. 自动化保存时格式化
启用保存时自动格式化:
打开 VS Code 设置。
搜索 Editor: Format On Save,勾选该选项。