fmt 重排段落
fmt 是 GNU coreutils 里的段落排版工具,把被硬换行切得七零八落的自然语言重新排成统一宽度,或反过来把过长的行拆开。它按空行识别段落边界,缺省宽度 75 列。整理邮件草稿、清洗从别处粘来的文档、统一提交信息与变更说明的换行,用它比手工敲回车省事得多。
基本信息
| 适用平台 | Linux(GNU coreutils);macOS 自带 BSD 版 fmt,选项较少 |
|---|---|
| 语法 | fmt [-w 宽度] [-s] [-u] [-p 前缀] [文件] |
| 默认宽度 | 75 列,可用 -w 调整 |
| 处理对象 | 自然语言段落,按空行分段,空行原样保留 |
典型使用场景
- 整理从网页或聊天工具复制来的文本,去掉多余的硬换行
- 统一变更说明、提交信息的行宽,便于在评审界面里阅读
- 把一整段很长的说明按 72 列拆开,嵌入邮件不超宽
- 清理文本里多余的空格与制表符,让段落恢复单空格间隔
- 对带引用前缀的文本按 -p 指定前缀重排,保留引用结构
常用示例
常用示例
fmt -w 72 draft.txt > clean.txt # 排到 72 列并输出到新文件
fmt -s -w 80 long.txt # 只做拆分不做合并
fmt -u -w 72 messy.txt # 顺带把多余空格压成单个
fmt -w 68 -p '> ' quote.txt # 按引用前缀重排,保留引用标记
fmt -t -w 72 tagged.txt # 段落首行缩进时用标记段落模式
cat draft.txt | fmt -w 72 | head # 与管道组合先看效果再落盘选项逐项读法
| 选项 | 作用 | 使用注意 |
|---|---|---|
| -w | 设置目标行宽,缺省 75 | 终端或邮件建议 68 到 72 |
| -s | 只拆长行,不合并短行 | 保留原有换行结构时用它 |
| -u | 统一空格:词间单空格、句后两空格 | 会改写句末空格习惯,正式文本先用样本试 |
| -p | 只重排以此前缀开头的行 | 引用块、注释块专用 |
| -t | 标记段落模式,首行缩进而其余行不缩进 | 处理缩进式段落时更整齐 |
fmt 对代码、表格、缩进结构化的文本是灾难,它会按段落把一切重新折行。只对自然语言段落使用,代码要格式化请交给专用工具。
中文没有空格分词,fmt 仍按空格与宽度折行,结果往往断在句中间。中文排版更适合用支持 CJK 宽度的工具,或干脆按句号手工分段。