ctrl+d逐次选中更安全,因其增量匹配可实时确认每处上下文(如const user_id=或"user_id"),支持跳过误匹配项;而\buser_id\b正则是跨文件替换的底线防护,能排除子串和字符串干扰。

Sublime Text 本身不支持语义级变量重命名,所谓“批量改名”本质是精准控制文本匹配范围 + 手动确认上下文。盲目用 Alt+F3 或 Ctrl+H 全局替换,大概率把 "user_id"、user_id_map、// user_id is deprecated 一起干掉。
为什么 Ctrl+D 逐次选中比全选更安全
Ctrl+D 是增量式匹配:光标停在 user_id 上,第一次按只高亮当前词,第二次才找下一个——你能实时看到它落在 const user_id = 还是 "user_id": 里,随时跳过或撤销。
- 光标必须双击选中完整变量名(不含空格、引号、点号),否则后续匹配会基于子串(如只选中
user就漏掉user_id) - 想跳过某处(比如日志字符串里的同名字段),按
Ctrl+K再按Ctrl+D,不是连按 - 选多了?按
Ctrl+U撤销上一次添加,比狂按Esc精准得多 - 如果变量含
$(如$api),查找前得确保启用了Escape Special Characters(小锁图标),否则$被当正则行尾锚点
\buser_id\b 正则是跨文件替换的底线防护
直接搜 user_id 等于开盲盒;加 \b(单词边界)才能排除 user_id_list、username、"user_id"。
- 在
Ctrl+H或Ctrl+Shift+F中启用 Regex(点左下角.*按钮),搜索框填\buser_id\b - 特殊字符必须转义:
$data要写成\$data\b,api.v1要写成api\.v1 - 务必先点
Find All,看右侧侧边栏列出的所有匹配项——只有一半在代码上下文里?立刻停手,别点Replace All - 跨文件时,路径限定很重要:搜
./src/**/*.ts,避开node_modules和构建产物
光标错位、列编辑失效的常见原因和补救
Ctrl+Shift+L 不是对齐工具,它只是把每行末尾放一个光标;Alt+鼠标拖拽 列选择依赖各行长度一致——这两者出问题,90% 是选区不干净或换行符混乱。
-
Ctrl+Shift+L后光标歪了?先按Home(不是←),所有光标跳到各自行首(含缩进);再按一次Home,跳过缩进到真正行首 - 列选择时末尾几行没光标?说明那几行比其他行短(缺逗号、空格或制表符),先统一换行符:
Ctrl+Shift+P→Set Line Endings: Unix - 想统一加前缀(如
const)?用列选择更可靠:Alt+鼠标从第一行列首垂直拖到最后一行列首 - 输入后结构崩了?检查是否误触了
Tab或回车——多光标模式下,任何按键都会同步作用于所有光标
最易被忽略的点:Sublime 从不告诉你哪些地方“该改却没改到”。比如 var key = 'user_' + suffix、eval('user_id')、或者跨作用域的同名变量,Ctrl+D 和 \bxxx\b 都看不到。这时候只能靠人工扫上下文,而不是指望快捷键。











