VBScript 代码格式化
格式化所有处理都在浏览器本地完成,数据不上传服务器
VBScript 代码的缩进重排。按 `Sub` / `If … End If` / `For … Next` / `Do … Loop` / `Select Case … End Select` 这些块关键字的配对算出每一行该缩进几层。 ⚠️ 这里要说清一件事:这一页没有语法树。 本站另外七个语言格式化工具(Python / Ruby / Java / C / C# / PHP / Perl)都用 tree-sitter 真的解析出语法树,缩进块由解析器给出。VBScript 做不到 —— 现成的语法根本不存在:公共的 tree-sitter 语法包里没有 VBScript,npm 上唯一一个 VBA 语法是 C++ 原生插件、浏览器里跑不了。 所以这里退一步用关键字配对。它比「数括号」强得多 —— 认得字符串与注释里的假关键字(`"End If"` 不会被当成收尾)、认得单行 `If`(`If x Then y = 1` 没有 `End If`)、认得行尾 `_` 续行 —— 但它回答不了「这一行的 `}` 属于哪个块」这类问题。一份语法本身就有错的代码,这里给的缩进可能不合你的本意;而那七个语言即使遇到语法错,块边界仍然来自解析器。这一点如实写在这里,不藏着。 ⚠️ 只改每行开头的空白,行内一个字符都不动。 续行、字符串、注释里的任何内容都不会被碰到。 好处是它不需要下载任何东西(另外七个各要一份几百 KB 到 5 MB 的语法文件),打开就能用。
功能
- 按 Sub / Function / If / For / Do / While / Select Case / With / Class 的配对缩进
- 认得单行 If(`If x Then y = 1` 不会被当成块的开头)
- 字符串与注释里的 `End If` 之类不参与配对
- 行尾 `_` 的续行整行保留,不会被拆开
- 只改行首空白,行内一个字符都不动
- 缩进可选 2 空格 / 4 空格 / 制表符
- 关键字大小写不敏感(VBScript 本身就不敏感)
- 支持代码高亮显示
- 全部在本机完成,代码不上传,也不需要下载语法文件
使用方法
- 把代码粘贴到左侧
- 选择缩进宽度
- 按 Ctrl/⌘ + Enter 或点「运行」
- 点「复制」取走结果
常见问题
- 它和同一个站里 Python / Java 那些格式化工具是一回事吗?
- 不是,能力上有实打实的差距,这里说清楚。 那些工具用 tree-sitter 把代码解析成语法树,每一行的层级由它所属的语法结构决定 —— 解析器知道哪个 `}` 属于哪个块。 VBScript 没有可用的语法文件(公共的 tree-sitter 语法包里没有它,npm 上唯一的 VBA 语法是原生插件、浏览器里跑不了),所以这里用的是关键字配对:认得出 `If … End If`、`For … Next` 这类配对,按配对算层级。 差别在语法错的代码上:语法树能告诉你「不管语法对不对,这个块的边界在这里」;关键字配对只能告诉你「这一行的第一个词是块关键字」。所以如果一份代码的语法本身就错了,这里的缩进可能不合你的本意。
- 我的代码用了单行 If,会被弄乱吗?
- 不会。VBScript 里 `If x Then y = 1` 这种单行写法没有 `End If`,如果把它当块的开头,后面每一行都会被越推越深。 这里的判据是整行是否以 `Then` 结尾:`If x Then` 是块式,`If x Then y = 1` 是单行式,两者分开处理。`If x Then ' 说明` 这种「Then 后面跟注释」的写法仍然算块式 —— 注释会先被去掉再判断。
- 字符串和注释里的关键字会被误认吗?
- 不会。判断结构之前会先剥掉注释、并且认得出字符串:`s = "End If"` 里的 `End If` 不是关键字,`' End Sub` 整行是注释。 字符串里的两个连续引号(`"他说 ""好"""`)也按 VBScript 的规则当成一个转义引号,不会把字符串提前结束。
- 它会动我的代码内容吗?
- 不会。这里只改每行开头的空白 —— 行内的一个字符都不动,不重排、不换行、不删行、不动字符串与注释。行尾 `_` 的续行整行保留,因为那一行的缩进是你自己排的,重排它等于把一条语句拆成两段。 顺带一提,这也意味着它不能替你补上缺失的语法。它是缩进工具,不是代码修复工具。
相关工具
JS 美化与压缩
格式化在线 JS 压缩与美化:压缩去掉注释与空白(保留 /*! 许可声明),美化按大括号与分号缩进排版。字符串与模板字符串内容原样保留,文件不上传。
JS 压缩混淆
格式化去掉注释与空白,字符串与数字改成转义写法,局部变量换成短名 —— 体积更小,随手一看也更难读。全部在本机完成。
代码着色
网络把代码染上语法颜色,选中复制即可带颜色贴进 PPT 与 Word;也可以输出内联样式的 HTML 源码,直接放进博客或邮件。支持 26 种语言。
Shell 格式化
格式化给 Shell 脚本按结构缩进:if/fi、for/done、case/esac 与函数体都会对齐。只改行首空白,heredoc 与跨行字符串逐字保留。
JSON 格式化
格式化在线 JSON 格式化与校验工具:树形折叠浏览、搜索键值、逐节点改值与删除、语法错误定位到具体行列,输入框带行号与高亮。全部在浏览器本地完成。
JSON 转代码
格式化把 JSON 样本转成 TypeScript interface、Go struct、Java class 或 Rust struct:不齐的键标成可选、类型冲突退化为联合类型。全程在浏览器本地生成。