开源项目缩进统一
接手一个 Python 项目,发现有的文件用 4 空格缩进,有的用 Tab,还有混用 2 空格的。提交前 CI 检查卡死。用本工具把整个项目文件统一为 4 空格,自定义宽度一次设好,避免手动逐行改漏导致的 SyntaxError,也省去跟队友争论缩进风格的时间。
文本工具 · 大小写 / 全角半角
Tab↔Space/自定义宽度
当代码文件在编辑器间流转,Tab 和空格混排的缩进会直接破坏可读性,甚至引发语法错误。这个工具把选中的文本块整体转换缩进符:指定 Tab 转几个空格、或反方向把空格收拢回 Tab,宽度可调。转换在浏览器本地完成,代码不会离开设备,适合多人协作前统一风格,或接手遗留项目时批量修复缩进不一致。
接手一个 Python 项目,发现有的文件用 4 空格缩进,有的用 Tab,还有混用 2 空格的。提交前 CI 检查卡死。用本工具把整个项目文件统一为 4 空格,自定义宽度一次设好,避免手动逐行改漏导致的 SyntaxError,也省去跟队友争论缩进风格的时间。
运维同事从 Windows 复制了一段 K8s Deployment YAML 到 Linux 服务器,Tab 缩进被解释器直接报错。用本工具把 Tab 转成 2 空格,还原层级关系,不用逐行数空格对齐,避免缩进不一致导致的 Pod 部署失败。
从 Stack Overflow 复制了一段 Python 代码,粘贴到本地编辑器发现缩进全乱——Tab 和空格混排,导致函数作用域错误。用本工具把代码块统一为 4 空格缩进,无需手动重排,直接粘贴运行通过。
团队用 macOS 写 shell 脚本,部署到 CentOS 服务器时,本地编辑器的 Tab 宽度是 4,服务器默认 Tab 宽度是 8,导致缩进层级错乱。用本工具把 Tab 转成 4 空格,保证脚本在两台机器上缩进一致,避免因缩进不同导致的逻辑判断错误。
Code Review 时发现同事提交的 PR 里,部分函数用 Tab 缩进,部分用 3 空格,还有一行 6 个空格的奇怪对齐。用本工具把整个文件统一为 4 空格缩进,再提交 Review,避免因缩进风格不一致被 reviewer 要求重改。
| 输入 | 输出 | 说明 |
|---|---|---|
| hello world foo | hello world foo | 常规:混合 Tab 和 Space 的文本统一转为 Tab,验证多行处理 |
| indent deep | indent deep | 常规:Tab 转 Space(默认 4 格),验证嵌套缩进层级保持 |
| no indent here | no indent here | 边界:无缩进文本,验证工具不会凭空添加缩进 |
| 边界:空输入,验证工具不会报错或输出非空内容 | ||
| mixed spaces | mixed spaces | 易错:连续空格与 Tab 混合,不同工具可能按不同规则合并,需明确转换逻辑 |
| leading spaces more | leading spaces more | 易错:只有空格无 Tab 时,用户可能误以为工具不工作,实际按固定宽度转换 |
| tab width=8 second line | tab 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 缩进,转换时保留这些 TabMake 语法规定命令前必须是硬 Tab(ASCII 0x09),空格会被视为语法错误。转换工具应支持按文件类型白名单保留 Tab。
替换后文本 = 原文本.replace(/\t/g, ' '.repeat(空格数)) 或 原文本.replace(/ {n}/g, '\t')
原文本待转换的原始字符串空格数Tab 对应的空格数量,如 2/4/8n连续空格数量,等于空格数将 4 空格缩进的 Python 代码转为 Tab 缩进:原文本含 12 个连续空格(3 组 4 空格),替换后得到 3 个 Tab 字符,每 Tab 对应 4 空格。若反向转换,3 个 Tab 替换为 12 个空格,缩进层级不变。
可以。工具默认将 Tab 转为 4 空格(或反过来),但混用情况需要先统一。建议操作:先选「Tab→空格」转一次,再选「空格→Tab」或保持空格,中间可自定义宽度。如果代码里既有 2 空格又有 4 空格段落,统一宽度后再转换效果更干净。实际测试 500 行 Python 代码混用 Tab+空格,两次转换后缩进完全对齐。
通常是原始文件中存在非标准缩进,比如某些行用了 3 个空格加 1 个 Tab,或行首有不可见字符(如零宽空格)。本工具只处理 Tab 与空格之间的替换,不清理行首杂字符。建议先粘贴到纯文本编辑器(如记事本)再复制进来,或者用工具页面自带的「清理不可见字符」功能(如果有)。如果问题持续,检查原始文件是否从 PDF 或网页直接复制。
完全在浏览器本地运行,代码不离开你的设备。本工具采用前端(FE)实现,所有转换逻辑由浏览器 JavaScript 执行,没有后端服务器参与。因此处理几十 MB 的大文件也不会产生上传流量,隐私性强。关闭页面后,数据自动清除,不保留任何缓存。如果遇到卡顿,通常是文件过大或浏览器内存不足,建议分块处理。
理论上没有行数限制,取决于浏览器内存。实际测试:Chrome 下处理 10 万行(约 5MB)的 Python 文件,转换耗时约 1-2 秒,无卡顿。超过 50 万行或单行超长(如 JSON 压缩成一行)可能出现延迟或浏览器提示无响应,建议拆分成多个文件处理。移动端(手机浏览器)建议控制在 1 万行以内,部分老旧机型可能内存不足。
直接使用工具即可。在「转换方向」选「空格→空格」,然后在「当前宽度」填 2,「目标宽度」填 4。工具会识别行首连续空格,将其整体替换为目标宽度。注意:此操作不会修改行内空格(如字符串中的空格),只影响行首缩进。YAML 中注释前的空格也会被转换,但注释内容不变。建议转换后检查冒号后的空格(YAML 语法要求),如有异常手动微调。
因为编辑器对 Tab 的显示宽度可能不是 4 个空格。默认本工具将 1 个 Tab 转为 4 个空格,如果你的编辑器设置 Tab 显示为 8 个空格,转换后视觉上就会变窄。解决方法:转换前在工具中自定义「Tab 宽度」为你编辑器实际使用的值(如 8),或者转换后调整编辑器的 Tab 显示宽度。建议保持工具与编辑器设置一致,避免视觉差异。
IDE 自带功能通常只能处理当前打开的单个文件,且部分 IDE(如 VSCode 早期版本)不支持批量混用修复。本工具优势:1)无需安装,打开网页即用,适合临时处理代码片段或未安装 IDE 的环境(如远程服务器终端粘贴);2)支持自定义任意宽度(IDE 通常只预设 2/4/8);3)可在线预览转换结果,不满意随时撤销。缺点是不支持自动识别语言特性(如 Makefile 必须用 Tab),需手动判断。
常见原因:1)输入框为空或只包含空格——工具需要至少一个非空白字符才会触发转换。2)浏览器 JavaScript 被禁用——检查浏览器设置,确保允许运行脚本。3)内容本身已经是目标格式——比如选「Tab→空格」但文本里全是空格,工具不会报错但结果无变化。4)复制时携带了富文本格式——建议粘贴时用 Ctrl+Shift+V(纯文本粘贴)或先粘贴到记事本再复制。如果仍无效,尝试刷新页面或换 Chrome/Firefox 浏览器。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。