先说结论:对齐不在数据行,在分隔行
很多人对着数据行的格子想办法——补空格、排竖线、对齐字符,都没用。Markdown 表格每列的对齐方式由分隔行(第二行,全是短横线那行)对应列的冒号决定:
:---—— 左对齐(冒号在左):---:—— 居中(两边都有)---:—— 右对齐(冒号在右)---—— 不加冒号,默认左对齐
想让「姓名」靠左、「金额」靠右、「状态」居中,只改分隔行这一行,数据行一个字不用动:
| 姓名 | 金额 | 状态 |
| :--- | ---: | :---: |
| 小明 | 1200 | 已发货 |
| 小红 | 860 | 待付款 |
渲染出来,三列各归各位。顺带说明:源码里每列竖线排得齐不齐,只影响你自己看着累不累,渲染器只认冒号。
每种列该用哪种对齐:有约定俗成
对齐不是随便挑的,照着 Excel、财务报表的惯例来,表格一眼就能读:
- 文字列(姓名、商品名、说明):左对齐
:---,中文英文都从左往右读,左对齐最自然; - 数字列(金额、数量、百分比):右对齐
---:,个位、小数点上下对齐,两行数字扫一眼就能比出大小; - 短标签列(状态、日期、编号):居中
:---:,内容短、长度接近,居中最清爽。
一张典型的订单表,三种对齐各就各位:
| 订单号 | 客户 | 金额 | 下单日期 | 状态 |
| :---: | :--- | ---: | :---: | :---: |
| A1024 | 王强 | 299.00 | 2026-10-01 | 已发货 |
| A1025 | 李敏 | 1580.50 | 2026-10-03 | 待付款 |
| A1026 | 赵磊 | 88.00 | 2026-10-08 | 已签收 |
注意「金额」列右对齐后,299.00、1580.50、88.00 的小数点上下严格对齐——这就是数字列右对齐的价值。
写了不生效?三个高频原因
逐条排查:一,全角符号——冒号必须是半角英文 :,写成中文「:」渲染器不认,从别的文档复制粘贴最容易带进来;短横线同理(mdview 在 v1.0.104 修过对齐语法不生效的问题,遇到失效先查这个)。二,加错行——冒号是分隔行的语法,写在表头或数据行里都没有用。三,渲染器不支持——少数极简渲染器会忽略冒号,全部按左对齐渲染;换个支持的查看器(如 mdview)就正常。
还有一个容易误会的点:对齐是按列整体生效的——某列写了 :---:,表头和该列所有内容一起居中。标准语法没法让同一列「表头居中、内容左对齐」各动各的;真有这个需求,看上一篇:表头怎样设置对齐,mdview 支持表头单独设置。
mdview:不想记冒号,就点菜单
按 F2 就地编辑:右键列菜单一键设对齐
用 mdview 打开 .md 文件,按 F2,鼠标移到表格上边缘浮现列手柄,右键打开列菜单,「内容左对齐 / 内容居中 / 内容右对齐」点一下,这一列的对齐立即切换,分隔行的冒号自动写好,不用记冒号在左还是在右。改完自动保存(停笔一秒左右静默写入文件),Ctrl + Z 可撤销,再按一次 F2 或按 Esc 退出回到阅读。
按 F3 分屏编辑:左边写冒号,右边当场验收
愿意手写冒号的话,F3 分屏编辑更直观:左边是源码,右边是实时预览,分隔行冒号一改,右边这列立刻换方向;不小心敲成全角冒号,右边纹丝不动,当场就暴露了,不用存盘再切窗口验证。长文档左右两边还按章节自动滚动同步。
小结
| 想要的效果 | 分隔行写法 | mdview F2 列菜单 |
|---|---|---|
| 文字列靠左(默认) | :--- 或 --- | 「内容左对齐」 |
| 金额、数量靠右 | ---: | 「内容右对齐」 |
| 状态、日期居中 | :---: | 「内容居中」 |
| 只动表头不动内容 | 标准语法做不到 | 「表头居中」等表头组(见上一篇) |
记住一句话:对齐看分隔行的冒号——数字右对齐、文字左对齐、短标签居中,表格立刻专业很多。表格语法想系统过一遍(对齐、列宽、合并单元格),见表格完全指南;从零建一张表见怎样添加一个表格;表建好后要加列、加行、删行删列,系列里各有一篇;mdview 编辑器的全部快捷键整理在这篇速查里。