应优先使用正则替换而非多光标替换斜杠:多光标不区分上下文易误伤字符串、正则字面量和注释;正则需启用.*模式,注意换行符、边界锚点及字符串上下文避坑。

多光标替换斜杠前,先确认你真需要多光标
直接用 Ctrl+Shift+L 拆多光标再挨个输 /,看似快,实则危险:它不区分上下文,会把字符串里的 /(比如 "path/to/file")、正则字面量里的 /(如 /d+/g)、甚至注释中的 // 全部干掉。真正适合多光标的情况只有两种:目标位置高度可控(比如只选中了函数参数列表里几行硬编码路径),或文件极小且人工可逐行核验。否则,优先走正则替换。
正则替换斜杠必须开 .* 模式,且注意换行符陷阱
在 Ctrl+H 面板中:
✅ 点击右下角 .* 图标激活正则模式(图标变蓝)
✅ 查找框填 /(纯斜杠,无需转义)
✅ 替换框填 /(想替成反斜杠就填 \,因为 JSON + 正则双层解析需双写)
⚠️ 关键细节:
• 如果路径跨行(比如被换行符断开的
src/<br>components/),默认
. 不匹配换行,得加 (?s) 前缀,即查找填 (?s)/•
Where 框填 . 表示整个项目;留空只作用于当前打开文件;填 ./src/**/*.js 时必须用正斜杠,Windows 下也别写
只想替换某一层级的路径斜杠?加边界锚点
比如要把 user/profile/edit 中的 / 换成 .,但保留 http://api.example.com/v1/users 里的 /。纯搜 / 必然误伤。
可行方案:
• 查找填 ^([^/:]+/[^/:]+)/([^/:]+)$ → 只匹配形如 a/b/c 这种三段、无协议无冒号的纯路径
• 或更宽松:查找 (? → 排除前面是 <code>: 或 "、后面是 " 或空白的斜杠(Sublime 的 Boost.Regex 支持负向先行断言 (? 和负向后行断言 <code>(?!...))
• 注意:这类正则调试成本高,建议先 Ctrl+F + Alt+Enter(Find All)预览匹配项,确认无误再 Replace All
替换后引号内路径出问题?那是没避开字符串上下文
批量把 require('./utils') 改成 require('.\utils') 时,如果直接全局替 / → \,会把字符串内的 './utils' 也改,变成 '.\utils' —— 这没问题;但若原字符串是 "./a/b/c",替完变成 ".\a\b\c",而 JS 字符串里 是非法转义,运行时报错。
根本解法不是调正则,而是:
• 用 Ctrl+Shift+F 全局搜 "./ 或 './,手动处理字符串路径
• 或先用正则把所有字符串用临时标记包住(如 "([^"]*)" → __STR_START__$1__STR_END__),再替路径斜杠,最后还原
• 更稳妥:这种涉及语义的替换,交给 ESLint 插件或 Webpack alias,别硬刚文本

















