Sublime Text支持安全高效的变量重命名:文件内用Ctrl+D多重选择,限定范围用Ctrl+H+全词匹配+In Selection,跨文件需LSP插件+F2,格式转换可用正则但需分步验证。

user_name 在函数内 vs 全局常量),但通过多重选择 + 作用域控制,完全可以安全、高效地批量重命名变量——关键不是“能不能”,而是“怎么选得准”。
用 Ctrl+D 多重选择同名变量(最常用)
这是最快捷的文件内重命名方式,适合局部变量、函数参数或单一作用域内的修改。
- 鼠标双击一个
user_id,选中它 - 连续按
Ctrl+D(Windows/Linux)或Cmd+D(Mac),每次按会选中下一个相同文本 - 如果某处是误匹配(比如
user_id_list),按Ctrl+K再按Ctrl+D跳过当前项 - 全部选中后直接输入新名,如
userId,所有光标同步更新
⚠️ 注意:它只匹配「完全相同的字符串」,不识别作用域。所以别在全局搜索前跳进整个项目——容易把 const user_id = ... 和 console.log(user_id) 都改了,但漏掉 let user_id 声明前的注释里写的 user_id(那是你该删的)。
用 Ctrl+H + 「全词匹配」限定替换范围
当变量名较常见(如 i、data、res),必须靠「全词匹配」和「作用域选区」来防误伤。
- 先用鼠标或
Ctrl+Shift+↑/↓选中目标函数体或代码块(比如从function getUser()到对应}) - 按
Ctrl+H打开替换面板 - 勾选
Whole Word(全词匹配)和Case Sensitive(区分大小写) - 点击右下角
In Selection按钮(或手动勾选),确保只在选区内操作 - 输入原名
user_info→ 新名userInfo→ 点Replace All
✅ 这样比盲目全局替换安全得多;❌ 别跳过 In Selection —— 一旦忘了,可能把 JSON 字符串里的 "user_info" 也替成 "userInfo",导致解析失败。
跨文件重命名?必须用 LSP 插件 + F2
纯文本替换无法处理跨文件引用,比如 utils.js 中声明的 formatDate,被 main.js 和 test.js 同时调用。这时候得靠语言服务器。
- 装好
Package Control后,安装对应语言的 LSP 插件(如LSP-pyrightfor Python,LSP-typescriptfor TS/JS) - 打开任意含该变量的文件,把光标停在
formatDate上 - 按
F2或右键 →LSP: Rename Symbol - 输入新名,回车——所有引用(包括 import / export / 调用处)自动更新,且不会碰同名但不同作用域的变量
? 提示:LSP 重命名依赖语法树分析,所以文件必须能被正确解析(比如 JS 文件不能有语法错误,TS 需要 tsconfig.json)。否则 F2 会无响应或报错 No symbol found at current position。
正则替换处理命名格式转换(如 snake_case → camelCase)
如果只是统一改风格(比如把整个项目里的 api_url 改成 apiUrl),正则比手动更可靠,但需分步验证。
- 按
Ctrl+H,点右下角.*启用正则模式 - 查找:
\b([a-z]+)_([a-z])(匹配单词边界 + 小写字母 + 下划线 + 单个小写字母) - 替换:
$1\u$2(\u表示下一个字符大写,$1/$2是捕获组) - 先点
Find All,看是否只命中预期位置(比如没把class_name里的name单独拎出来) - 确认后点
Replace All;若一次不全,可重复运行(因为user_first_name需两轮才能变userFirstName)
⚠️ 正则不支持递归大写,user_first_name → userFirstName 需至少两次替换;更复杂的转换建议用外部脚本或插件(如 Case Conversion),别硬刚正则。
var 还是 const,也不管这个 id 是参数、属性还是字符串字面量。所以每次动手前,先问自己一句:我这次改的,是「所有出现的地方」,还是「所有该改的地方」?答案决定你该用 Ctrl+D、Ctrl+H 还是 F2。










