多光标重命名变量前必须人工确认语义边界,因Sublime无类型系统,重命名仅为纯文本替换,需逐个检查上下文避免误改JSON、注释、SQL等非代码位置。

多光标重命名变量前必须人工确认语义边界
Sublime 没有类型系统,所有“重命名”都是纯文本替换。高并发 API 字段(如 user_id、req_id、trace_id)常出现在 JSON 字符串、注释、日志模板、SQL 查询里——这些地方绝不能动。
你得用 Ctrl+D 逐个点,每按一次就看一眼上下文:是否在 const 声明左侧?是否在 return { user_id: ... } 的键名位置?是否在 WHERE user_id = ? 这类 SQL 片段中?
常见错误:双击选中 user_id 后直接狂按 Ctrl+D,结果把 "user_id": "abc" 和 /* user_id is legacy */ 全卷进去。
实操建议:
- 关掉 match_whole_word 临时测试(避免漏掉 req_id_v2);改完立刻关回
- 变量含 $(如 $req_id)时,搜索必须写成 \$req_id\b
- 下划线默认是分词符,trace_id 双击只选中 trace;要么删设置里的 _,要么用正则 \btrace_id\b 搜
列模式插入递增请求 ID 要先对齐再操作
高并发场景下常需批量生成 req_id 序列(如 req_1001、req_1002),但 InsertNums: Insert Numbers 插件只在光标当前位置插入,不自动补零、不格式化。
列模式(Alt+拖拽 或 Ctrl+Shift+↑/↓)是唯一可靠方式,但它要求视觉对齐——中文、全角字符、混排空格会导致光标横向偏移。
容易踩的坑:
- 直接在未格式化的日志行里列选第 3 列,结果第 2 行光标落在字段中间
- 忘关自动换行(word_wrap),列选被折行打断
- 光标不在行首就列选,缩进错位导致插入位置飘移
正确流程:
- 先 Ctrl+Shift+P → Indentation: Convert to Spaces 统一空格
- 再 Ctrl+Shift+P → Trim Trailing White Space 清末尾空格
- 用 Ctrl+L 选中目标行 → Ctrl+Shift+L 拆光标 → Home 跳行首 → Alt+鼠标拖拽 拉出严格对齐列
- 输入 req_ 后,再调 InsertNums: Insert Numbers 填 1001 1
跨文件更新 API 字段必须用 Ctrl+Shift+H 配正则锚定
单文件里改完 user_id → uid 不代表结束。高并发 API 的字段定义往往分散在 schema 文件、DTO 类、数据库迁移脚本、OpenAPI YAML 里。Ctrl+D 和 Alt+F3 都只作用于当前文件,全局替换必须走 Ctrl+Shift+H(Replace in Files),且必须加锚点。
典型失败场景:
- 搜 user_id 替换为 uid,结果把 user_id_token 改成 uid_token,破坏认证逻辑
- 在 package.json 里误替了 "user_id" 依赖名
实操要点:
- Where 框填 src/**/*.ts,src/**/*.js,!**/node_modules/**,!**/dist/**,排除无关路径
- 查找框填 (?,排除 JSON 字符串内的匹配(Sublime 正则不支持负向先行断言 <code>(?,所以退而求其次用 <code>\b + 手动预览)
- 替换为 uid 后,务必点 Find All 预览,逐行确认上下文
- 改完立刻用 Ctrl+Shift+F 搜旧名,验证是否残留
多光标删字段值时别碰结构符号
重构 API 字段常需批量清空旧值(如把 user_id: "123" 改成 user_id: null),但直接删容易带掉冒号、逗号或括号。Ctrl+Shift+L 拆光标后,如果光标落在引号内,按 Delete 会删字符串内容;如果光标在冒号后空格处,按 Backspace 可能吞掉冒号。
最稳做法是用正则精准定位值部分:
- 先 Ctrl+F 搜 user_id:\s*["']([^"']*)["'](启用正则)
- 勾选 In Selection(否则全文跑)
- Alt+Enter 选中所有匹配项
- Ctrl+Shift+L 拆光标 → Ctrl+→ 跳到引号内 → Delete
注意:Ctrl+U 只能撤销最近一次光标操作,删多了就得重来;大文件里正则开太多 .* 容易卡死,优先用 [^"']* 代替 .*


















