批量替换XML标签文本需先将文件夹加载为项目,确保右下角显示路径且侧边栏有树形结构;Where填.或src/*/.xml;启用正则并用<name>1*</name>等非贪婪写法;用$1复用内容;替换后须Save All,注意只读文件需先取消RO属性。< ↩

用 Ctrl+Shift+F 在项目中批量替换 XML 标签文本
必须先加载整个文件夹为项目,否则 Ctrl+Shift+F(或 Cmd+Shift+F)只搜“已打开文件”,XML 文件没被加载就根本不会进搜索范围。右下角看到类似 /path/to/project 的路径,侧边栏有树形结构,才算真正就位。
操作时注意三点:
-
Where框填.表示当前项目根目录;若只想改src/下的 XML,填src/**/*.xml - 务必点击右下角
.*图标启用正则——不点它,<name>.*?</name>会被当普通字符串匹配 - 替换前先点
Find,看高亮是否只落在目标标签内容上;误匹配到注释或属性值就立刻停手
匹配 XML 标签内容要避开贪婪陷阱
<name>.*</name> 看似能抓标签内容,但会跨标签吞掉中间所有东西,比如把 <name>白色口罩</name><pose>Unspecified</pose> 整段吃掉。正确写法是用非贪婪 + 显式排除:
- 单行安全写法:
<name>[^<]*</name>([^<]表示“非左尖括号字符”) - 允许换行的写法:
<name>[\s\S]*?</name>,但需额外勾选面板右下角的↩ (Match line breaks) - 如果标签内可能含嵌套(如
<name><b>蓝色</b>口罩</name>),正则就不可靠,得切到 Python 脚本处理
用 $1 引用捕获组保留结构只改内容
想把所有 <name>白色口罩</name> 改成 <name>已佩戴口罩</name>,但又不想手动敲开闭合标签?用捕获组最稳:
- 查找框填:
<name>([^<]*)</name>(([^<]*)抓住标签内纯文本) - 替换框填:
<name>已佩戴口罩</name>(固定值)或<name>$1</name>(复用原内容做条件判断) - 别写
\1或$0——Sublime 只认$1、$2,$0是整段匹配,容易把标签一起覆盖掉
替换后必须 Save All,否则全丢
点完 Replace All,所有 XML 文件标签页右上角出现星号 *,这是 Sublime 在说“我缓存了修改,但还没写入磁盘”。关窗口前没按 Ctrl+K → Ctrl+B(Windows/Linux)或 Cmd+K → Cmd+B(macOS),改动直接清空,且无历史快照可恢复。
最容易被忽略的是:某些 XML 文件可能被系统标记为只读(右下角显示 RO),这时 Replace All 会静默失败——得先右键文件 → Properties 去掉只读属性,再重试。

















