SideBarEnhancements 的 Batch Rename 菜单项不出现,是因为必须同时满足三个条件:显式通过 Project → Add Folder to Project… 添加目录、重启 Sublime、在 Packages/User/SideBarEnhancements.sublime-settings 中启用 "enable_batch_rename": true,缺一不可。

SideBarEnhancements 的 Batch Rename 菜单项为什么没出现
它不是装完插件就自动可用,缺一个条件都不行:Project → Add Folder to Project… 必须显式添加目录,拖进窗口或双击打开不算;安装后必须重启 Sublime;还要在 Packages/User/SideBarEnhancements.sublime-settings 里确认有 "enable_batch_rename": true。少一条,右键菜单里就只有 Rename(单个),没有 Batch Rename。
输入新后缀时该填 ts 还是 .ts
填 ts,不是 .ts。插件会自动补点;填 .ts 会导致生成 ..ts,文件名直接损坏。模板里也不能写死扩展名,比如 {{name}}.ts 看似合理,但若原文件是 utils.js,结果会变成 utils.js.ts——因为 {{name}} 包含原扩展名。正确写法是:{{name|replace:'.js':''}}.ts(需插件支持该过滤器),或更稳妥地:只选中 .js 文件再执行,模板用 {{name}}.ts。
PowerShell 或 Bash 一行命令比插件更可控
当你要处理嵌套目录、排除某些路径、或加条件逻辑时,插件模板语法立刻失效。命令行才是真批量:
- Windows PowerShell(当前目录下所有
.js→.ts):Get-ChildItem *.js | Rename-Item -NewName { $_.Name -replace '\.js$', '.ts' } - macOS/Linux Bash(同上):
for f in *.js; do mv "$f" "${f%.js}.ts"; done - 执行前先运行
Get-ChildItem *.js或ls *.js,确认匹配范围,别在工程根目录盲目跑 -
${f%.js}是 Bash 参数展开,删结尾.js;PowerShell 不支持,必须用-replace或$_.BaseName - 含空格路径必须加引号:
"$f",否则file name.js被拆成两个参数,mv报错
改完后 Sublime 标签页还显示旧名,不是 Bug 是 atomic_save 在起作用
这是最常被忽略的同步断裂:磁盘文件名已变,但 Sublime 标签页仍指向旧句柄。根本原因是默认设置 "atomic_save": true,它让 Sublime 先写临时文件再原子替换,但重命名后旧路径失效,机制失灵。解决方法:打开 Preferences → Settings,在右侧用户设置中加入:"atomic_save": false。验证是否生效:重命名后看标签页标题是否立刻变成新文件名;若仍是旧名+星号(*),说明未生效。


















