VSCode原生不支持批量重命名文件,必须依赖终端命令(如bash/PowerShell)或File Utilities等插件;终端方案更可靠,需严格预览、加引号处理空格中文、正确使用捕获组(\1而非$1),且严禁跳过echo预览步骤。

VSCode 原生不支持批量重命名代码文件——所有“批量改文件名”的操作,要么走终端命令,要么靠插件中转,编辑器本身对文件系统没有 rename 权限。
终端命令是唯一可复现、跨平台、带正则的主力方案
集成终端(Ctrl+)就是你的执行环境,无需插件,不依赖语言服务。关键在预览+引号+变量展开三要素。
- 执行前必须先用
ls *.js(macOS/Linux)或Get-ChildItem *.ts(PowerShell)确认匹配范围,别信“大概” - 路径含空格或中文?
"$f"必须加双引号,否则 shell 会截断 - macOS/Linux 纯 bash 环境下,避免用系统
rename(各发行版实现不一),优先用循环 +${f%.js}或${BASH_REMATCH[1]} - PowerShell 中捕获组索引从 0 开始,
$_.Matches[0].Groups[1].Value才是第一个()的内容,数错就白跑
File Utilities 插件能界面操作,但正则语法和开关极易踩坑
它不是“VSCode 内置功能”,而是借壳运行的第三方工具,行为和编辑器搜索面板完全不兼容。
- 必须勾选
Use Regular Expression,否则.*\.ts就是字面量.*.ts,不是通配 - 捕获组引用写
\1,不是$1或${1}——这是插件自己的解析逻辑,和 VSCode 搜索面板相反 - 不支持
\U大写转换,想把user-api.ts→userApi.ts,得拆成两步:先替换-([a-z])为__UPPER__\1,再第二轮处理占位符 - 插件无 dry-run 模式,也不会提示“跳过隐藏文件”,
.env、.gitignore默认被忽略,需手动关掉fileutils.ignoreHiddenFiles
别误用 Ctrl+Shift+H 或资源管理器多选+F2
这两个入口根本看不到文件名——它们只处理文件内容或强制统一命名,无法做规则映射。
-
Ctrl+Shift+H是全局文本搜索替换,对user-api.ts这种文件名完全不可见 - 资源管理器里 Ctrl+多选后按
F2,只会弹出一个输入框;输userApi.ts,所有选中文件全变成这个名字,不是规则替换 - 右键单个文件 →
Rename输入框不解析正则,${basename/\-(\w)/\U$1/}会被当纯字符串,原样保留 - 语言服务(如 TS Refactor)对文件名零支持:光标停在
import './user-api.ts'字符串里按F2,不会触发任何重命名
真正安全的流程永远是:先 ls / Get-ChildItem 看到实际文件列表 → 在终端里写带 echo 的命令预览效果 → 确认无误后再删 echo 执行。任何跳过这三步的操作,都在赌运气。


















