C++ | 缩进混用tab和空格的c++代码库,vscode中看着很乱,怎么快速统一缩进风格?

1. 配置 VS Code 的缩进规则

设置全局或项目级的缩进规则,确保后续输入的代码符合规范。

步骤:

  1. 打开 VS Code 设置:
    • 快捷键:Ctrl + ,(Windows/Linux)或 Cmd + ,(Mac)。
    • 手动路径:File > Preferences > Settings。
  2. 搜索 Editor: Insert Spaces,勾选该选项(强制用空格代替 Tab)。
  3. 搜索 Editor: Tab Size,设置缩进空格数(如 2 或 4)。
  4. 搜索 Editor: Detect Indentation,取消勾选(避免自动检测旧文件的缩进风格)。

2. 自动格式化现有文件

使用 VS Code 的格式化工具批量修复现有文件的缩进混乱问题。

方法 1:使用内置格式化功能

  1. 打开需要格式化的文件。
  2. 执行格式化:
    • 快捷键:Shift + Alt + F(Windows/Linux)或 Shift + Option + F(Mac)。
    • 右键菜单:在编辑器中右键,选择 Format Document。
  3. 如果提示选择格式化工具,推荐使用:
    • 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,勾选该选项。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值