sublime的语义重构依赖插件或字符串匹配,无原生语法感知能力;ctrl+d逐词选中重命名最安全,跨文件替换须用\b单词边界正则并限定路径,括号结构提取靠ctrl+shift+m,所有操作前需人工核验find all结果。

Sublime 的快捷键本身不提供语义重构能力,所有“重命名”“提取函数”操作都依赖字符串匹配或插件辅助;盲目用 Ctrl+Shift+F 一键替换极易破坏 JSON 字符串、正则字面量或注释里的同名文本。
Ctrl+D 逐个选中变量名,比 Find All 更可控
这是当前文件内小范围重命名最稳妥的方式:光标停在 user_id 上,连按 Ctrl+D(Windows/Linux)或 Cmd+D(macOS),它只匹配完全相同的文本,不识别语法,但也不会误触字符串或注释。
- 中途遇到误选(比如命中了
// user_id is required),按Ctrl+K Ctrl+D跳过当前项 - 选中后直接输入新名,所有光标同步更新;改完务必按
Esc退出多光标,否则后续输入会重复到所有位置 - 变量名是常见词(如
data、list)时,先按Ctrl+F查一遍,肉眼确认高亮是否都在赋值左侧、参数列表或let/const/def后面
Ctrl+Shift+F 做项目级替换,必须加 \b 单词边界
跨文件重命名不能靠裸字符串搜索。user_id 不加防护会匹配 user_id_map、"user_id"、/user_id\/ 等所有含该子串的位置。
- 在
Ctrl+Shift+F面板中启用正则(点左下角.*图标),搜索框填\buser_id\b - 特殊字符要转义:PHP 的
$user_id写成\$user_id\b;JS 中的api$写成api\$($在正则里是行尾锚点) -
Where栏必须限定路径,例如./src/**/*.js或*.py,坚决排除node_modules、dist、build
Ctrl+Shift+M 选括号结构,是安全提取函数的前提
想把一段逻辑抽成独立函数,关键不是写新函数,而是精准圈出待提取的代码块——鼠标拖容易漏掉末尾逗号或换行,而 Ctrl+Shift+M(Windows/Linux)或 Cmd+Shift+M(macOS)能一次选中完整括号内容,包括嵌套。
- 光标停在
{或(上,按一次选内部;再按一次向外扩展一层(比如从 if 块扩到整个函数体) - 选中后
Ctrl+X剪切 → 新建文件 →Ctrl+V粘贴,就完成函数拆分 - 配合
Ctrl+Shift+K可快速删空括号块,比如清理if (true) {}这类无意义结构
Ctrl+Shift+P 调命令,绕过菜单直击配置项
很多重构动作不需要打开设置面板,Ctrl+Shift+P 输入关键词就能直达底层开关,比如缩进调整、编码转换、主题切换。
- 输
indentation→ 选Convert Indentation to Spaces或Set Indent Width: 2,回车即生效 - 输
sort→ 选Sort Lines (Unique)去重,或Sort Lines排序 import 列表 - 输
color→ 快速切换配色方案,暗色模式对长时间重构更友好
真正危险的不是不会用快捷键,而是没意识到 Sublime 所有“重构”都是字符串层面的——它不会告诉你某个 user_id 是在解构赋值 const { user_id } = obj 里,也不会跳过模板字符串中的 `${user_id}`。每次批量操作前,手动扫一眼 Find All 结果,比事后跑 eslint 或 mypy 补救成本低得多。











