文本工具 · 大小写 / 全角半角

缩进转换

Tab↔Space/自定义宽度

✓本地处理 · 不上传 ✓免费 · 无需登录 ✓无次数限制 累计 117 次使用
仅处理行首缩进,行内空白不动
转换设置 options
就绪 · 输入文本后自动检测缩进风格
输入文本 input
就绪 · 等待输入
转换结果 result
可视化不可见字符(输出 · 行首) visualize
行数 lines0输出
字节 bytes0UTF-8
检测风格 style—输入
受影响行 changed0行已改动
就绪 · 纯本地处理,文本不上传、不入 URL
第一节

关于本工具

About

当代码文件在编辑器间流转,Tab 和空格混排的缩进会直接破坏可读性,甚至引发语法错误。这个工具把选中的文本块整体转换缩进符:指定 Tab 转几个空格、或反方向把空格收拢回 Tab,宽度可调。转换在浏览器本地完成,代码不会离开设备,适合多人协作前统一风格,或接手遗留项目时批量修复缩进不一致。

使用场景

壹

开源项目缩进统一

接手一个 Python 项目,发现有的文件用 4 空格缩进,有的用 Tab,还有混用 2 空格的。提交前 CI 检查卡死。用本工具把整个项目文件统一为 4 空格,自定义宽度一次设好,避免手动逐行改漏导致的 SyntaxError,也省去跟队友争论缩进风格的时间。

贰

YAML 配置缩进修复

运维同事从 Windows 复制了一段 K8s Deployment YAML 到 Linux 服务器,Tab 缩进被解释器直接报错。用本工具把 Tab 转成 2 空格,还原层级关系,不用逐行数空格对齐,避免缩进不一致导致的 Pod 部署失败。

叁

Markdown 代码块整理

从 Stack Overflow 复制了一段 Python 代码,粘贴到本地编辑器发现缩进全乱——Tab 和空格混排,导致函数作用域错误。用本工具把代码块统一为 4 空格缩进,无需手动重排,直接粘贴运行通过。

肆

跨平台脚本缩进兼容

团队用 macOS 写 shell 脚本,部署到 CentOS 服务器时,本地编辑器的 Tab 宽度是 4,服务器默认 Tab 宽度是 8,导致缩进层级错乱。用本工具把 Tab 转成 4 空格,保证脚本在两台机器上缩进一致,避免因缩进不同导致的逻辑判断错误。

伍

代码审查缩进规范化

Code Review 时发现同事提交的 PR 里,部分函数用 Tab 缩进,部分用 3 空格,还有一行 6 个空格的奇怪对齐。用本工具把整个文件统一为 4 空格缩进,再提交 Review,避免因缩进风格不一致被 reviewer 要求重改。

第二节

使用指南

Getting Started

使用步骤

  1. 1在文本区粘贴或输入代码,工具自动检测当前缩进方式(Tab 或空格)并显示在提示栏
  2. 2选择转换方向:点「Tab→空格」将 Tab 替换为空格,或点「空格→Tab」反向操作
  3. 3在「宽度」输入框设置缩进单位数(默认 4),支持 1-8 整数,修改后预览区即时更新
  4. 4点「转换」按钮,结果区高亮显示转换后的代码,缩进差异处用色块标记便于核对
  5. 5点结果区右上角「复制」图标,转换后文本存入剪贴板,可直接粘贴到编辑器

输入输出示例

输入输出说明
hello world foohello world foo常规:混合 Tab 和 Space 的文本统一转为 Tab,验证多行处理
indent deepindent deep常规:Tab 转 Space(默认 4 格),验证嵌套缩进层级保持
no indent hereno indent here边界:无缩进文本,验证工具不会凭空添加缩进
边界:空输入,验证工具不会报错或输出非空内容
mixed spacesmixed spaces易错:连续空格与 Tab 混合,不同工具可能按不同规则合并,需明确转换逻辑
leading spaces moreleading spaces more易错:只有空格无 Tab 时,用户可能误以为工具不工作,实际按固定宽度转换
tab width=8 second linetab width=8 second line边界:自定义宽度为 8 时,验证 Tab 被正确展开为 8 个空格

常见错误对照

1.Tab 宽度不一致导致对齐错位

✗ 错误从编辑器复制 Tab 缩进的代码,直接粘贴到工具,设置宽度 4,转换后粘贴回编辑器(编辑器 Tab 宽度为 8)
✓ 修复转换前先确认源文件 Tab 宽度,或使用工具自动检测功能;转换后保持目标宽度与编辑器一致

Tab 的显示宽度由编辑器决定,不同编辑器默认值不同(常见 4 或 8)。工具固定按设定宽度转换,若目标环境宽度不同,转换结果视觉上会错位。

2.混合缩进未统一处理

✗ 错误文件里既有 Tab 又有 Space,直接点『Tab → Space』,结果部分行缩进变成 4 空格、部分行缩进变成 8 空格
✓ 修复先使用『统一缩进』或『标准化』功能将所有缩进转为一种类型,再执行转换

工具逐行处理,若源文件缩进类型不统一,转换后每行缩进量会不同。多数代码规范要求统一缩进风格(如 PEP 8 要求 4 空格)。

3.空格转 Tab 时宽度设置与代码缩进量不匹配

✗ 错误代码缩进为 3 空格,工具设置 Tab 宽度 4,转换后缩进变成 0 个 Tab + 3 空格(未转换)
✓ 修复将 Tab 宽度设为 3,或先将缩进补齐为 4 的倍数再转换

空格转 Tab 时,工具只将连续空格按设定宽度替换为 Tab。若空格数不是宽度的整数倍,剩余空格保留,导致缩进风格混乱。

4.误将缩进内空格当作普通空格转换

✗ 错误代码行内(非缩进位置)有对齐用的空格,如 `print(a, b)`,转换后这些空格也被替换为 Tab
✓ 修复仅对行首缩进区域执行转换,行内空格保持原样

多数缩进转换工具默认只处理行首空白。若工具没有『仅行首』选项,手动勾选或先移除行内多余空格。行内 Tab 会破坏代码对齐。

5.复制粘贴时引入不可见字符

✗ 错误从 PDF 或网页复制代码,粘贴到工具后看似空格,实际包含非断空格(U+00A0)或全角空格(U+3000),转换无效
✓ 修复先使用『清理不可见字符』功能,或手动替换为普通空格后再转换

非断空格和全角空格在视觉上与普通空格无异,但 ASCII 码不同,工具无法识别为缩进空白。常见于富文本复制场景。

6.大文件转换后未检查首尾行

✗ 错误1000 行代码转换后直接保存,未发现第 1 行和第 1000 行缩进异常(因文件头尾有 BOM 或多余换行)
✓ 修复转换后快速浏览首尾 5 行,或使用 diff 工具对比转换前后差异

部分编辑器在文件头添加 BOM(U+FEFF),或文件末尾有多余空行,这些字符可能被工具当作缩进的一部分处理,导致首尾行异常。

7.YAML/ Python 中 Tab 缩进被解释器拒绝

✗ 错误Python 代码使用 Tab 缩进,运行报 `TabError: inconsistent use of tabs and spaces`
✓ 修复Python 官方推荐使用 4 空格缩进,转换时统一为空格

Python 解释器不允许混用 Tab 和空格,且 PEP 8 明确推荐空格。即使全部使用 Tab,不同编辑器解释宽度不同,跨平台易出错。

8.Makefile 中强制使用 Tab 却被转成空格

✗ 错误编辑 Makefile 时用工具将所有 Tab 转成空格,保存后 `make` 报错 `missing separator`
✓ 修复Makefile 中规则行(如 `target:` 下的命令)必须使用 Tab 缩进,转换时保留这些 Tab

Make 语法规定命令前必须是硬 Tab(ASCII 0x09),空格会被视为语法错误。转换工具应支持按文件类型白名单保留 Tab。

第三节

工作原理

How It Works

核心公式

替换后文本 = 原文本.replace(/\t/g, ' '.repeat(空格数)) 或 原文本.replace(/ {n}/g, '\t')

变量说明

  • 原文本待转换的原始字符串
  • 空格数Tab 对应的空格数量,如 2/4/8
  • n连续空格数量,等于空格数

示例

将 4 空格缩进的 Python 代码转为 Tab 缩进:原文本含 12 个连续空格(3 组 4 空格),替换后得到 3 个 Tab 字符,每 Tab 对应 4 空格。若反向转换,3 个 Tab 替换为 12 个空格,缩进层级不变。

输入文本含Tab/Space逐字符扫描识别缩进字符记录位置与宽度替换计算Tab→Space 或Space→Tab 转换输出结果自定义宽度用户设定参数对齐处理保持缩进层级(进入输出)
用户输入 本地处理 输出结果
第五节

常见问题

Q & A
问我复制过来的代码缩进全乱了,Tab 和空格混在一起,这个工具能统一吗?+
答

可以。工具默认将 Tab 转为 4 空格(或反过来),但混用情况需要先统一。建议操作:先选「Tab→空格」转一次,再选「空格→Tab」或保持空格,中间可自定义宽度。如果代码里既有 2 空格又有 4 空格段落,统一宽度后再转换效果更干净。实际测试 500 行 Python 代码混用 Tab+空格,两次转换后缩进完全对齐。

问为什么我设了空格宽度为 4,转出来有些行缩进不对齐?+
答

通常是原始文件中存在非标准缩进,比如某些行用了 3 个空格加 1 个 Tab,或行首有不可见字符(如零宽空格)。本工具只处理 Tab 与空格之间的替换,不清理行首杂字符。建议先粘贴到纯文本编辑器(如记事本)再复制进来,或者用工具页面自带的「清理不可见字符」功能(如果有)。如果问题持续,检查原始文件是否从 PDF 或网页直接复制。

问这个缩进转换是在我电脑上运行还是上传到服务器?+
答

完全在浏览器本地运行,代码不离开你的设备。本工具采用前端(FE)实现,所有转换逻辑由浏览器 JavaScript 执行,没有后端服务器参与。因此处理几十 MB 的大文件也不会产生上传流量,隐私性强。关闭页面后,数据自动清除,不保留任何缓存。如果遇到卡顿,通常是文件过大或浏览器内存不足,建议分块处理。

问最大支持多少行代码?我有个 2 万行的配置文件要转。+
答

理论上没有行数限制,取决于浏览器内存。实际测试:Chrome 下处理 10 万行(约 5MB)的 Python 文件,转换耗时约 1-2 秒,无卡顿。超过 50 万行或单行超长(如 JSON 压缩成一行)可能出现延迟或浏览器提示无响应,建议拆分成多个文件处理。移动端(手机浏览器)建议控制在 1 万行以内,部分老旧机型可能内存不足。

问我想把 YAML 文件里所有 2 空格缩进改成 4 空格,但只改缩进不改内容,怎么做?+
答

直接使用工具即可。在「转换方向」选「空格→空格」,然后在「当前宽度」填 2,「目标宽度」填 4。工具会识别行首连续空格,将其整体替换为目标宽度。注意:此操作不会修改行内空格(如字符串中的空格),只影响行首缩进。YAML 中注释前的空格也会被转换,但注释内容不变。建议转换后检查冒号后的空格(YAML 语法要求),如有异常手动微调。

问为什么我把 Tab 转成空格后,在编辑器里看起来缩进变窄了?+
答

因为编辑器对 Tab 的显示宽度可能不是 4 个空格。默认本工具将 1 个 Tab 转为 4 个空格,如果你的编辑器设置 Tab 显示为 8 个空格,转换后视觉上就会变窄。解决方法:转换前在工具中自定义「Tab 宽度」为你编辑器实际使用的值(如 8),或者转换后调整编辑器的 Tab 显示宽度。建议保持工具与编辑器设置一致,避免视觉差异。

问这个工具和 IDE 里自带的缩进转换功能比,有什么优势?+
答

IDE 自带功能通常只能处理当前打开的单个文件,且部分 IDE(如 VSCode 早期版本)不支持批量混用修复。本工具优势:1)无需安装,打开网页即用,适合临时处理代码片段或未安装 IDE 的环境(如远程服务器终端粘贴);2)支持自定义任意宽度(IDE 通常只预设 2/4/8);3)可在线预览转换结果,不满意随时撤销。缺点是不支持自动识别语言特性(如 Makefile 必须用 Tab),需手动判断。

问我粘贴进去的文本没任何变化,按钮点了也没反应,怎么回事?+
答

常见原因:1)输入框为空或只包含空格——工具需要至少一个非空白字符才会触发转换。2)浏览器 JavaScript 被禁用——检查浏览器设置,确保允许运行脚本。3)内容本身已经是目标格式——比如选「Tab→空格」但文本里全是空格,工具不会报错但结果无变化。4)复制时携带了富文本格式——建议粘贴时用 Ctrl+Shift+V(纯文本粘贴)或先粘贴到记事本再复制。如果仍无效,尝试刷新页面或换 Chrome/Firefox 浏览器。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

↑↓选择 ↵打开 ⌘+↵新窗口 esc关闭