← 返回工具箱

Tab 与空格互转

TAB ⇄ SPACES · 代码格式化

Tab 与空格双向互转,缩进宽度 2 / 4 / 8 可选;从别人仓库拷代码发现缩进全乱时,一键规整。

缩进宽度
输入文本
转换结果 · 预览
按行处理行首缩进:Tab 展开为 N 个空格,或把每行行首的 N 个空格收拢为 Tab;行内多空格会保留。

>_ 使用指南 · GUIDE

把一份 Tab 与空格混用、缩进乱掉的代码或文本粘贴进来,选择转换方向(Tab → 空格 或 空格 → Tab)与缩进宽度(2 / 4 / 8),点一下即可整篇规整,输出结果直接复制回编辑器。

最常见的场景是从别人仓库或网页拷代码:粘贴后发现行首有的是 Tab 有的是空格,Python 因此报 IndentationError,或不同编辑器里对不齐。本工具统一缩进后,再贴回去就干净了。

常见用法:

  1. Tab → 空格:把制表符展开成指定宽度的空格,适配强制空格缩进的项目规范
  2. 空格 → Tab:把每行前导空格压缩回 Tab,减小文件体积、对齐「用 Tab 缩进」的仓库
  3. 定宽转换:宽度选 2 / 4 / 8,确保转换前后视觉缩进一致,不破坏层级

转换只处理行首与行内的缩进字符,不会改动代码的其它内容;所有处理都在浏览器本地完成,代码不会上传到任何服务器。

>_ 常见问题 · FAQ

Q1 · Tab 和空格到底哪个更好?为什么会有争议?

这是程序员的经典争论。Tab 的优势是「每个读者可按自己偏好调整宽度」且文件更小;空格的优势是「无论在哪都像素级一致」,不会因编辑器设置不同而对不齐。多数语言规范会定死一种(如 Python 官方建议用 4 空格、Go 用 Tab、Rust 默认 4 空格),关键不是选哪个,而是全项目一致,混用才会出问题。

Q2 · 从网页或别处拷代码后缩进全乱了,怎么救?

网页复制常会把 Tab 悄悄换成空格或反之,导致层级错乱。把粘贴结果丢进本工具,先统一成同一种缩进(按项目规范选空格或 Tab、定好宽度),再贴回编辑器即可。若项目规范不明,先统一成空格最稳妥,兼容性最好。

Q3 · 转换会不会改变代码逻辑或字符串内容?

不会。本工具只替换用作缩进的 Tab 与空格;真正的风险点是字符串内部的 Tab 字符不能被误伤——转换聚焦行首缩进,不会改动字符串字面量里的内容。不过建议转换后用项目测试或 git diff 复核一次,确认无意外改动。

Q4 · 宽度选 2、4 还是 8?有什么区别?

宽度决定「一个 Tab 展开成几个空格」或反向压缩。视觉缩进层级由宽度决定,选错不会丢信息,但会让结构看起来偏紧或偏松。多数项目用 4 空格或 2 空格(前端常用 2),后端常用 4;跟项目已有风格保持一致即可。拿不准就先转成 4 空格,最常见的默认值。

Q5 · 为什么有的文件里 Tab 和空格混在一起显示时对齐错乱?

因为编辑器对「一个 Tab 的宽度」理解不同(有的当 2、有的当 4 或 8)。同一文件里 Tab 和空格并存时,在不同编辑器下对不齐、看似层级错乱。要根治,就把整个文件统一为同一种缩进,本工具一键完成,之后无论谁打开都一致。

嵌入代码

把下面的代码复制到你的网页,即可将本工具嵌入为 iframe(自动隐藏导航与页脚)。

高度px
此工具在你的浏览器本地运行,输入内容不会上传。按 Ctrl K 可随时切换到其他工具。