正则替换前须确认语法模式为css,否则插件不生效;在.vue/.svelte中需先选中内内容;匹配属性值需用正则限定上下文,避免误伤注释和字符串;批量修改用分组+反向引用保结构;替换后必须手动保存并用git核验变更范围。

正则替换前必须确认语法模式为 CSS
Ctrl+Shift+H 按下没反应,大概率是因为 Sublime 把当前内容识别成了 Plain text 或 HTML,而 html_css_js_prettify 类插件只在 CSS 语法模式下生效。右下角状态栏显示不是 CSS,就别指望格式化或属性值批量改能跑起来。
解决方法很简单:点击右下角语言标识 → Set Syntax → CSS;如果是在 .vue 或 .svelte 文件里,必须先手动选中 <style></style> 标签内的全部内容,再执行操作。否则插件直接跳过,不报错也不提醒。
用正则精准匹配属性名+值对,避免误伤注释和字符串
想把所有 color: #000; 替成 color: var(--text-primary);,不能直接搜 color: —— 它会命中 /* color: red; */ 注释,也可能串进 background: linear-gradient(to right, #000, #fff); 里的颜色值。
更稳的写法是加上下文限定:
- 启用正则(点右下角
.*图标或按Alt+R) - 查找:
color:\s*#[0-9a-fA-F]{3,6}\s*; - 替换:
color: var(--text-primary); - 勾选
Match case和Whole line不必要,但Whole Word通常也关掉——CSS 属性名本身不含单词边界
注意 \s* 匹配任意空白(包括换行),[0-9a-fA-F]{3,6} 确保只捕获合法十六进制色值,避开 rgba(0,0,0,1) 这类。
批量改多个属性值时,用分组+反向引用保结构
比如要把 margin: 10px 20px; 统一转成 margin: calc(10px * 1.2) calc(20px * 1.2);,就得靠捕获组保留原始数值。
查找:margin:\s*(\d+px)\s+(\d+px)\s*;
替换:margin: calc($1 * 1.2) calc($2 * 1.2);
关键点:
- 括号必须转义成
\(和\)才能匹配字面量括号,否则会被当分组用 - $1、$2 是 Sublime 的反向引用语法,不是
\1(那是传统正则) - 如果某处是
margin: 5px;(单值),这个正则不会匹配——得另写一条处理margin:\s*(\d+px)\s*; - 别忘了测试
margin-top、padding等类似属性是否被意外卷入,必要时加行首锚定^margin:
替换后必须 Save All,且优先用 Git 检查变更范围
点完 Replace All,所有目标文件标签页出现星号 *,这只是内存缓存——Sublime 不自动保存。关窗口前没按 Ctrl+K → Ctrl+B(Windows/Linux)或 Cmd+K → Cmd+B(macOS),改动就彻底丢弃,没有撤销历史可回溯。
更危险的是:正则跨文件替换不区分作用域。你改的是 button.css,但 theme.css 里同名属性也被动了;color: #000 在媒体查询里、伪类里、keyframes 里全中招。所以:
- 执行前用
Find All预览全部匹配项,人工扫一遍路径和上下文 - 替换后立刻
git status+git diff,确认只改了预期文件 - 特别留意
@keyframes块和:not()选择器里的属性值,它们容易被忽略但又极易因格式错乱导致样式失效
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











