查找替换(Ctrl + H)
把作品里重复的东西成批改掉:所有的 10 换成 15、所有的「你好」换成「Hi」、所有的
移动 (10) 步 换成 在 (1) 秒内滑行到 x: (10) y: (0)。跨角色、跨场景,没打开过的角色
照样改得到,整次替换按一次 Ctrl + Z 全部回去。

面板是两行输入加一张结果表:上面一动,下面立刻跟着变,没有「查找」按钮。Esc 或标题栏
上的 × 关掉。
它是一扇窗,不是弹窗。 没有遮罩,点外面不关,开着的时候工作区照常能点、能拖、能换角色; 按住标题栏可以把它搬到顺手的地方,下次开还在那儿。默认贴在积木区左上角 —— 离积木栏近,从 那儿拖一块进来路最短。空着的时候只有输入那几行那么高,有结果才往下长。
手里拖着积木经过它的时候,窗口的底色会让出来,手里那块积木隔着窗看得见;字和格子仍然是实 的,要放进哪一格一目了然。
打开方式#
| 入口 | 打开时的样子 |
|---|---|
Ctrl + H |
空面板,范围停在「当前角色」 |
Ctrl + F 搜索面板右上角的「替换」 |
把搜索框里的词带过来当「找什么」 |
| 右键积木上的一个值 →「把所有「10」换成…」 | 「找什么」已填好,只在这一类里找,并且是整值匹配 |
| 右键一块积木 →「替换所有这样的积木…」 | 「找什么」已经放好那块积木 |
键位在设置里能改,见快捷键。

怎么用#
「找什么」一格里既能打字,也能放一块真积木。 打了字就是找积木上填的值,放进积木就是 找积木,一块换一块。面板上没有「用哪一种」这个选择,它由这一格里放的东西决定。
打进去的词像某块积木的名字(「如果」「重复执行」)、而按值一处都没找到时,这一格直接按那块 积木查找。结果区写明「值里没有「如果」,当成积木找的」,旁边一句「只按值找」退得回来。先按值 找过一遍才切,所以本来能找到的值不会被抢走。
输入位里打的字留着,接着打就重新认一遍。底下列出的是其他对得上的积木,现在用的那块描着边,
点另一块就换过去。匹配和全局搜索是同一套,拼音和缩写都认:打 rg 也
能找到「如果 ◇ 那么」。

「换成」那一格同理:左边是积木时,右边打「重复执行」就认成那块积木,「替换」随即亮起来。 打的是一整句就走快速造句那套解析,句子里写的数字算数 —— 打「移动 25 步」 换进去的是 25,不是积木栏模板里的 10。
- 在「找什么」里打字,或者放一块积木进去。结果立刻列出来。
- 需要的话调「范围」和后面那排筛选。
- 在「换成」里填上要换成什么,每条结果就多出一块「改完的样子」。
- 不想改的那几条把勾去掉,点右下角的「替换 N 处」。

「换成」空着时,面板就是一个查找工具:只列出命中,点一行跳到那块积木跟前,替换按钮 灰着并在旁边写明「先填「换成」」。
列表按角色 · 代码页分组,组头右边写着这一组有几处。底栏左边是总数(N 处 · M 个角色),
右边是替换按钮。回车等于点替换按钮。
结果是边打边出的:手停下约 0.2 秒才真去找一遍,中途的每一次输入都会把上一次顶掉,所以连 着打一串字只查最后那一次。正在查的时候结果区顶上有一条细进度线,旧结果留在原地变淡。
找值#
「找什么」里打的是字面的字,. * ( 没有特殊意思。找的是积木上填的值:数字槽、
文字槽、下拉里选中的那一项、注释里的字。
在哪找#
条件那一行上的四颗按钮控制找哪几类,可以同时开几类,也可以只开一类:
| 类别 | 找的是 | 例子 |
|---|---|---|
| 数字 | 数字槽 | 移动 (10) 步 里的 10 |
| 文字 | 文字槽 | 说 [你好] 里的「你好」 |
| 下拉选项 | 下拉里选中的那一项 | 将旋转方式设为 [左右翻转] |
| 注释 | 注释里的文字 |
只开「数字」是最常用的一种:一个叫「关卡10」的角色、一句「第 10 关」的台词都不会被 卷进来。
后面两颗小按钮是两个开关:
Aa—— 区分大小写,只影响英文。全字—— 整个值等于「找什么」才算。不勾的话100里也含着10,会被改成150。
下拉的候选值#
命中的全是同一个下拉时,「换成」底下会列出这个下拉的全部合法值,点一个就填上。手打一 个不在选项里的值,那几条会被标成不改,并写明原因。
下拉存的是积木内部的值,不是画在积木上的那几个字:将旋转方式设为 [左右翻转] 存的是
left-right。所以这一类通常先找到一处,再从候选值里挑要换成哪个。
找积木#
往「找什么」里放一块积木,面板就换成一块换一块。

怎么把积木放进去#
| 方式 | 怎么走 |
|---|---|
| 吸一块 | 点输入格右边的吸管,再点工作区里的积木 |
| 拖进来 | 从积木栏或者工作区直接把积木拖进这一格松手 |
| 打名字 | 打「如果」:值里没有这个词就直接按这块积木找,底下列出其他候选 |
| 打一句话 | 「换成」那一格里打「移动 25 步」,走快速造句那套解析 |
吸管按下去之后面板会让开,工作区整个露出来,顶上写着现在该做什么,Esc 取消。

一格里只放一块:拖进去的积木下半截接着什么、肚子里有什么,放进来时就摘掉了。那些东西 不参与匹配,替换的时候会从被换掉的那块身上原样接回去。
匹配的是什么#
按积木本身(哪一种积木)加上这一格里每个槽的状态。槽点一下换一种:
| 状态 | 画出来 | 意思 |
|---|---|---|
| 就这个值 | (10) |
必须正好是 10。默认,所见即所得 |
| 任意 | (任意) |
这个槽填什么都算 |
| 任意 ① | (任意①) |
填什么都算,并且记住,「换成」那边能引用 |
积木上的槽有两个以上时,下面会多出一行「全设为任意」,一下把所有槽放开。
槽里插着一块报告块(比如 移动 ((x坐标)) 步 里的 x坐标)时,那一格整个算一个槽,
上面盖着一张牌子写明它现在算什么,默认是「任意积木」:这一格必须插着积木,是哪块不管。它
同样可以被记住,记的是整块。
记住一个值,换到新积木上#
任意① 记住的东西两种都认:槽里填着 10 就记住 10,槽里插着 x坐标 就记住整块
x坐标。「换成」那边的槽也有三种状态:填死的值(画着什么就填什么)、引用 ①(把
记住的搬过来)、留空(用积木自带的默认值)。
上面那张图里,移动 (任意①) 步 换成 在 (1) 秒内滑行到 x: (①) y: (0),移动 10 步 和
移动 25 步 各自把自己的数搬进了新积木的 x。
形状对不上就不让换#
堆叠块只能换堆叠块,报告块只能换报告块,布尔块、帽子块同理:形状不一样的话,新积木接不进 旧积木待的那个位置。面板会把原因贴在结果区顶上,并且把替换按钮按灰、在按钮旁边写上同一句 话。

会丢掉什么,先写出来#
新积木的槽比旧的少、肚子少一个、或者它下面接不了东西时,旧积木身上那些内容无处安放。每一 条都写在那一行的右边:

会写出来的有这几种:
| 写的 | 什么时候 |
|---|---|
| 插在槽里的 N 块积木 | 旧积木某一格里插着报告块,而新积木没接住它 |
| 肚子里的 N 块积木 | 旧积木是 C 形的,新积木没有对应的肚子 |
| 下面接着的 N 块积木 | 新积木是终止块(下面接不了东西) |
| 填着的值 (9) (5) | 新积木的格子比旧的少 |
丢掉的东西不会被挪到别处,否则工作区角落会多出一堆认不出来历的积木。
反过来,接得住的一定接回去:新积木也是 C 形的,肚子原样搬过来;新积木下面接得了东西, 那一串也照旧接着。
自制积木不在这一层#
自制积木的调用(我的积木 那些)不参与积木替换:换掉它的名字是改定义,不是替换。面板
会拦下来并给出去处:右键那块积木 →「编辑」改定义,所有调用会跟着变,见
自制积木、全局自制积木。
范围#
条件那一行最左边的下拉,四档:
本代码页 | 当前角色 | 当前场景 | 整个作品默认是当前角色。范围选小了再点一次就行,选大了要靠撤销挽回,两边的代价并不对称。

上面这次替换跨了 58 个角色,其中绝大多数从头到尾没有被打开过,它们的积木只存在于作品数据 里,连工作区都没有,一样被改到了。
只换其中几处#
- 去掉某几条的勾,剩下的一起换。
- 只换一处:指针停在那一行上,行尾会出现一颗「替换」按钮。
一步撤销#
一次「替换 N 处」改了多少处、跨了多少个角色,都算一步。在哪个角色里按 Ctrl + Z
都是整次回去,不会只回来一半。再按 Ctrl + Shift + Z 重做。
行尾那颗「替换」逐条换的话,每点一次算一步。
替换完成后的提示#
一条通知:「替换了 146 处,跨 58 个角色」。有没改的还会跟一句「N 处跳过了(见列表)」,每 一条为什么不改都写在列表那一行的右边;整批都不动而且原因是同一句时,那句话贴在结果区顶上 说一遍。没有不出声的跳过。
跳过的有这么几种:
| 为什么 | 列表里写的 |
|---|---|
| 那是个名字,不是值 | 这是变量名,改名请用「重命名」 |
| 注释里嵌着积木 | 这条注释里嵌着积木,不动它 |
| 换成的值不在这个下拉的选项里 | 「X」不是这个下拉里的选项 |
| 两块积木形状对不上 | 这两块形状不一样(堆叠块 → 报告块),接不上 |
| 新积木用到的变量这个角色里没有 | 这个角色里没有「血量」 |
| 那段脚本几千块接成一串 | 这段脚本太长,暂时换不了 |
| 自己去掉了勾 | —— |
| 一次列不下(超过 400 条) | 列表末尾写着还有几处,那些不会被改 |
改名不是替换#
变量、列表、广播、造型、声音、角色、自制积木的参数,积木上存的是它们的名字。改名有专 门的入口,会把所有引用一起改;用替换去改其中一处,只会把这一处指到一个不存在的名字上。
所以这些一律不改,面板会写明原因:

变量、列表、广播能直接点「去重命名」,它会切到那个角色,打开改名框。造型、声音、角色名在 角色栏里右键它们改。
作品正在运行时#
正在跑的线程指着要被换掉的那些积木,所以先问一句:

细节#
- 匹配跑在作品数据上,不依赖画出来的积木,所以「整个作品」也快:129 个角色的大作品里, 一边打字一边找,连着敲七下只会真查一次,没有一次卡顿超过 50 毫秒。
- 面板不挡编辑器:开着的时候可以继续拖积木、切角色,吸管和拖放都靠这一点。
- 值替换的「找什么」里打的是字面的字,正则还没有。
- 积木建议只按积木上写死的那些字匹配,槽里的默认值不算:打「10」不会冒出一排 「移动 (10) 步」。单个字母也不给建议,那会匹配掉一大半积木。最多给 5 条。
- 一句话既像积木名又拼得成一句时以句子为准 —— 句子认得里面写的数字,按名字挑出来的 那块只带模板默认值。
- 自动认只在按值一处都没找到时发生。值有命中就照常列值,积木建议留在输入位底下等着点。
- 积木替换只看积木本身和这一格里画出来的那些槽。下半截接了什么、肚子里有什么都不参与。
- 颜色不参与替换,那是取色器的事。
- 结果一次最多列 400 条。再多就把范围缩小,或者改完再来一次。
- 没有任何积木工作区打开时(积木面板被关掉了)也能替换,但那一次撤不回来,面板会先提醒 一句。
- 成串的积木、或者整段写法的替换,目前还不支持。