ctrl+d比alt+f3更适合改常量名,因其增量高亮可实时验证匹配位置是否在const/#define/final后而非字符串或注释中,避免误替换。

Sublime Text 不能语义识别常量,所有“批量改常量名”都是带上下文约束的文本替换;安全操作必须手动确认每一处是否在 const、#define 或 final 后,而非字符串或注释中。
为什么 Ctrl+D 比 Alt+F3 更适合改常量名
常量命名(如 MAX_RETRY_COUNT、API_TIMEOUT_MS)通常全大写+下划线,但 Sublime 不会自动跳过 "MAX_RETRY_COUNT" 或 // MAX_RETRY_COUNT is deprecated。Ctrl+D 是增量式匹配,你能实时看到高亮位置是否在声明语句左侧:
- 光标必须双击选中完整常量名(如
MAX_RETRY_COUNT),再按Ctrl+D—— 若光标停在中间,它可能找不到下一个匹配 - 遇到
process.env.MAX_RETRY_COUNT或log("MAX_RETRY_COUNT"),立刻按Ctrl+K Ctrl+D跳过当前项 - 若常量名含数字或缩写(如
HTTP_200_OK),先用Ctrl+F搜\bHTTP_200_OK\b验证是否只命中独立词 - 默认
word_separators把_当分隔符,导致双击只选中HTTP;临时解决:按Ctrl+Shift+P→ 输入Set Syntax: Plain Text,再双击(避开语法感知干扰)
跨文件改常量名必须加 \b 且限定路径
用 Ctrl+Shift+F 全局搜索时,不加 \b 等于把 MAX_RETRY_COUNT 和 MAX_RETRY_COUNT_OLD、"MAX_RETRY_COUNT" 全当目标。安全做法是:
- 查找框填
\bMAX_RETRY_COUNT\b,务必勾选Regex和Whole Word -
Where栏限定路径,例如./src/**/*.js或!node_modules/** !dist/**,绝不能留空 - 先点
Find All,右侧边栏列出所有匹配项后——逐条点开看:是否在const后?是否在引号内?是否是 C++ 的#define行?只要有一处存疑,就停手调整正则 - 常量含特殊字符要转义:PHP 的
DEFINE('MAX_RETRY_COUNT', ...)中的单引号不影响,但 Shell 脚本里的MAX_RETRY_COUNT=30需确认等号前是否有空格或制表符;必要时用正则\bMAX_RETRY_COUNT(?=\s*=)锁定赋值左侧
改完必须验证三类易漏场景
常量被引用的位置比变量更隐蔽,改完后仅靠肉眼扫代码极易遗漏。最常出问题的是:
- 解构赋值:
const { MAX_RETRY_COUNT } = config;—— 这种结构里MAX_RETRY_COUNT是属性名,不是声明,但仍是有效引用 - 类型定义/接口:
interface Config { MAX_RETRY_COUNT: number; }—— TypeScript 中它属于类型成员,需同步更新 - JSON Schema 或配置文件:
"maxRetryCount": { "const": 30 }—— 若常量名映射到字段名,这里也得改,但 Sublime 不会提示 - 验证方法:改完立刻用
Ctrl+Shift+F搜旧名,重点检查上述三类文件;若项目有tsc或eslint,运行tsc --noEmit或npm run lint,编译报错比人工更快暴露引用断链
真正难的不是怎么选中,而是判断哪一行是“声明”、哪一行是“使用”、哪一行是“伪装成声明的字符串”。Sublime 不解析 AST,你得替它做这个判断——多按几次 Ctrl+D 比一次 Replace All 后花两小时 debug 引用错误划算得多。











