Sublime Text无一键安全全选同名变量功能,Ctrl+D为增量选中,Ctrl+Alt+G/Ctrl+Cmd+G才是全选但不区分作用域;需配合Whole Word、Match Case及正则\b防护,人工核验高亮位置以防误改。

没有“一键安全全选同名变量”的快捷键,所有所谓“全选”操作都默认不区分作用域、不识别语法上下文,必须人工干预才能避免误改。
Ctrl+D 是增量选中,不是全选
它只从当前光标位置开始,向后线性查找下一个**完全相同、大小写敏感、不跨单词边界**的词。按一次选一个,再按一次加一个,不会回溯,也不会跳过注释或字符串里的同名文本。
- 光标必须落在变量字符内部(比如
user_id的u、_或i都行,但不能停在前面空格或后面分号上) - 变量含
-会被切开(user-name只能选中user或name) - 想跳过某处匹配:按
Ctrl+K再按Ctrl+D - 选多了想撤回:按
Ctrl+U比狂按Esc更精准
Ctrl+Alt+G(Win/Linux)或 Ctrl+Cmd+G(macOS)才是真·全选
它等价于自动执行 Ctrl+F → 填入当前词 → Alt+Enter,但前提是光标已落在目标词内(不需要先双击)。默认启用 Whole Word 和 Match Case,所以:
-
api_timeout不会匹配api_timeout_v2或Api_Timeout - 想忽略大小写:先按
Ctrl+Alt+U切换开关 - 想匹配子串(如所有含
id的变量):先按Alt+W关掉Whole Word - 它不区分字符串、注释、JSON 值——
"user_id": "123"里的user_id也会被拉进来
用 Ctrl+F + Alt+Enter 最稳妥
当你不确定是否该全选,或者需要加条件(比如只改 JS 区域、排除注释),走标准查找流程最可控。
- 把光标放在目标词上(如
log_level),按Ctrl+F,Sublime 自动填入该词 - 点右下角图标切换模式:
Alt+W开/关Whole Word,Alt+C控制大小写,Alt+R开正则(如\blog_level\b) - 左下角看到匹配数(比如 “47”),再按
Alt+Enter把所有高亮转为多光标 - 执行前务必肉眼扫一遍所有高亮位置——尤其注意是否命中
// log_level is deprecated或{ "log_level": "debug" }
批量替换前必须加 \b 正则防护
用 Ctrl+H 或 Ctrl+Shift+F 执行替换时,不加单词边界 \b 就等于开盲盒。
- 搜
user_id会误中user_id_str、debug_user_id、甚至user_id_map - 正确写法是
\buser_id\b——\b匹配的是位置,不是字符,不用额外加空格 - 变量含特殊字符要转义:PHP 的
$user_id得写成\$user_id\b;JS 的api$要写成api\$\b - 执行前一定点
Find预览所有匹配项,重点检查是否命中 JSON 字符串值、注释、正则字面量(如/user_id/g)
真正容易被忽略的点是:Sublime Text 没有语义分析能力,Ctrl+Alt+G 和 Ctrl+D 都只认字符串,不认变量作用域。哪怕你在函数内重命名一个局部变量,闭包里引用它的地方、模块导出名、类型定义文件里的同名声明,它一个都不会帮你找出来。

















