ctrl+shift+c不能直接计算,需用正则替换配合$0表达式实现批量数学运算;必须启用正则模式,严格匹配纯数字,注意上下文、编码、文件大小及保存操作。

Ctrl+Shift+C 不能直接算,得靠正则替换 + $0
Sublime Text 本身不执行数学运算,Ctrl+Shift+C 只是“复制当前选中内容”,不是计算器。想批量给数字加 10、减 5 或乘以 2,必须用正则捕获数字,再在替换框里写表达式(如 $0 + 10),靠 Sublime 的“动态替换”机制触发计算——前提是启用正则且写法正确。
- 必须先按
Ctrl+H(或Cmd+H)打开替换面板,再点右下角.*图标启用正则模式 - 查找框填
\d+(匹配整数),或-?\d+\.?\d*(匹配带符号/小数的数),但注意:小数点和负号要手动转义才稳 - 替换框写
$0 + 10——$0是整个匹配项,不是$1;漏掉$0就变成纯字符串拼接,比如输+ 10会得到+ 10而不是123 + 10 - 如果数字带单位(如
100px、2.5em),得用捕获组:(\d+)px→$1 + 10px,否则$0 + 10会把px也卷进去算
为什么 $0 + 10 有时算出 NaN 或原样不动?
常见原因是匹配目标不是纯数字,或者 Sublime 没识别成数值上下文。比如匹配到 user_id: 123 中的 123,它确实是数字,但若前面有空格或换行符混入捕获范围,$0 就变成 " 123"(带空格字符串),加法失效。
- 确保查找表达式严格只捕获数字:用
(? 排除前后连字母/下划线的情况,比 <code>\b\d+\b更可靠 - 避免跨行匹配:默认正则不匹配换行符,
\d+不会吞掉\n123里的123;如需支持,得显式加[\s\S]*?并勾选↩(Match line breaks) - 小数处理要小心:
\d+\.\d+匹配3.14没问题,但$0 * 2会输出6.28;而1.0这类可能被当字符串,建议统一用parseFloat($0) * 2—— 但 Sublime 不支持 JS 函数调用,所以只能靠原始值本身可解析
跨文件批量加减,Where 路径和编码必须对得上
用 Ctrl+Shift+F 全局操作时,<p>用 <code>Ctrl+Shift+F 全局操作时,$0 + 10 看似能跑通,但实际失败常因路径或编码问题静默跳过文件。
-
Where框别填.—— 它会搜根目录下所有文件,包括node_modules和构建产物;推荐填src, -node_modules, -dist(逗号分隔,减号排除) - 非 UTF-8 编码文件(如 GBK 的日志)默认被跳过,右下角状态栏看编码,点开转成 UTF-8 再操作
- 文件大于 10MB 时 Sublime 自动忽略,改
Preferences → Settings加"index_files": false并重启,或单独打开大文件再替换 - 替换后所有标签页出现
*是正常现象,但Replace All in Files不自动保存 —— 必须手动Ctrl+K → Ctrl+B(Windows/Linux)或Cmd+K → Cmd+B(macOS)保存全部
别信“一键递增”,Text Pastry 和 Ctrl+Shift+P 都不解决真需求
想让每行数字依次 +1(如 100→101,101→102),Text Pastry 插件能生成序列,但不能基于原值做运算;Ctrl+Shift+P 里搜 “Increment” 找到的命令只对光标处单个数字有效,不支持批量。
- 真正可行的只有正则 +
$0表达式:查^(\d+)$(独占一行的数字),替为$0 + 1,再配合Ctrl+Shift+P → “Selection → Expand Selection to Line”预选所有目标行 - 如果数字不在行首/行尾,或中间夹杂文字(如
width: 200;),必须写上下文限定正则:width:\s*(\d+);→width: $1 + 50;,然后手动删掉多余的分号再运行 - 复杂逻辑(如“偶数加 10,奇数减 5”)Sublime 原生做不到,得导出文本用 Python 处理,再粘贴回来
实际批量改数字最易翻车的地方,不是正则写错,而是忘了关掉“Match Case”或“Whole Word”——它们会让 \d+ 失效;还有人习惯性点 Ctrl+H 后直接 Replace All,结果只改了当前文件可见区,几百个文件一个没动。











