在 Ubuntu 等 Linux 發行版上寫 C 代碼時,許多開發者習慣使用 Gedit。但 Gedit 只是純文本編輯器,缺乏智能縮排、大括號自動對齊等功能,導致代碼風格混亂、可讀性極差。手動調整格式既繁瑣又容易出錯。
indent 是 GNU 提供的經典命令行工具,專門用於自動調整 C/C++ 源代碼的縮排、大括號風格、空白行、行長度等格式。它高度可配置,支援 K&R、GNU、Linux Kernel 等主流編碼風格。
$ sudo apt-get install indent
$ indent -npro -kr -i8 -ts8 -sob -l80 -ss -bl -bli0 xxx.c
| 參數 | 長選項 | 作用 |
|---|---|---|
-npro | --ignore-profile | 忽略 .indent.pro 配置文件,確保命令行參數生效 |
-kr | --k-and-r | 採用 Kernighan & Ritchie (K&R) 經典大括號風格 |
-i8 | --indent-level8 | 每級縮排 8 個字符(等同於一個 Tab) |
-ts8 | --tab-size8 | Tab 字符顯示寬度設為 8 |
-sob | --swallow-optional-blank-lines | 刪除多餘的空白行,保持代碼緊湊 |
-l80 | --line-length80 | 單行超過 80 字符自動換行 |
-ss | --space-special-semicolon | 單行 for/while 循環中,分號前加空格 |
-ncs | --no-space-after-casts | 類型轉換後不加空格,如 (int)var 而非 (int) var |
-bl | --braces-on-if-line | 左大括號跟在 if/for 等關鍵字同一行 |
-bli0 | --brace-indent0 | 大括號相對外層縮排 0(即與 if 對齊) |
# 就地修改源文件(備份為 xxx.c~)
indent [參數] xxx.c
# 指定輸出文件,保留原文件
indent [參數] xxx.c -o xxx_formatted.c
調整前代碼混亂不堪;執行上述命令後,打開 Gedit 重新載入,代碼瞬間變得結構清晰、縮排整齊、大括號風格統一,閱讀體驗大幅提升。
.indent.pro,寫入常用參數,團隊成員無需記憶命令即可統一風格。indent --check 檢查格式合規性。indent 是 Linux C 開發者的「格式化瑞士軍刀」。掌握核心參數,配合編輯器/工作流集成,能徹底告別手動對齊的痛苦,讓團隊代碼風格高度統一,專注於業務邏輯而非格式糾結。