sublime text 不支持语义重命名,仅提供基于文本的多光标操作:ctrl+d 增量选中、alt+f3 全选单词(默认whole word)、ctrl+f+alt+enter 精准控制;跨文件需正则\bword\b并限定路径,且无法自动更新ast相关引用。

Sublime Text 没有“一键语义重命名”,所谓“选中所有同名变量”本质是文本匹配,必须手动控制边界,否则user_id会误改user_id_str、"user_id"甚至注释里的user_id。
Ctrl+D 是增量选中,不是全选
按 Ctrl+D(Windows/Linux)或 Cmd+D(macOS)只从当前光标位置向下线性查找下一个**完全相同**的字符串,不回溯、不跨作用域、不识别引号或注释边界。
- 光标必须落在变量字符内部(如
user_id的u或_上),停在空格、括号或引号内就失效 - 变量含
-(如user-name)会被切开,Ctrl+D只能选中user或name - 想跳过某处(比如字符串里的同名字段),按
Ctrl+K再按Ctrl+D,它会跳到下一项 - 选多了?按
Ctrl+U撤销上一次添加,比狂按Esc精准得多
Alt+F3 / Ctrl+Cmd+G 是真·全选,但默认开启 Whole Word
Alt+F3(Windows/Linux)或 Ctrl+Cmd+G(macOS)会一次性为当前光标下单词的所有匹配位置创建光标,但它默认启用 Whole Word 和 Match Case。
-
api_timeout不会匹配api_timeout_v2或Api_Timeout,大小写和子串都受控 - 想忽略大小写?先按
Ctrl+Alt+U切换开关 - 想匹配子串(如所有含
id的变量)?先按Alt+W关掉Whole Word - 风险点:它不区分作用域——
// user_id is required和"user_id": "123"全被拉进来;匹配超 500 处时界面可能卡死
Ctrl+F + Alt+Enter 最稳妥,尤其要防字符串误改
当你不确定 Alt+F3 是否安全,或需要限定范围(比如只改 JS 区域、排除注释),走 Ctrl+F 流程最可控——看得见匹配数,也方便调参。
- 光标放在目标词上(如
log_level),按Ctrl+F,Sublime 自动填入该词 - 点右下角图标切换模式:
Alt+W开/关Whole Word,Alt+C控制大小写,Alt+R开正则(推荐填\blog_level\b) - 左下角看到 “73 matches” 才放心按
Alt+Enter转为多光标;若发现匹配项里混着"log_level",立刻停手,改用\blog_level\b正则再试
跨文件重命名必须加 \b 正则,且不能直接点 Replace All
Ctrl+Shift+F(Find in Files)里搜 user_id 然后点 Replace All 是高危操作,JSON 值、注释、正则字面量全中招。
- 搜索框必须填
\buser_id\b:\b匹配单词边界,不是空格,也不需转义下划线 - 变量含特殊字符要转义:PHP 的
$user_id得写成\$user_id\b;JS 中的api$得写成api\$ - Where 栏必须限定路径,例如
src/**/*.js或!node_modules/**,否则dist/里打包后的代码也会被改 - 正确流程:先
Find All→ 右侧边栏逐条点开看上下文 → 确认无"user_id"或// user_id→ 再替换
真正容易被忽略的是:Sublime 不解析 AST,改完 user_id 不会自动更新 import { user_id } from 'x'、解构赋值 const { user_id } = obj 或 TypeScript interface 字段。每次重命名后,必须手动检查引用链是否断裂。











