Ctrl+P 是符号跳转入口,支持@符号导航、@@全局搜索、#HTML/JS匹配、:行号跳转;Ctrl+D增量选中,Alt+F3全量匹配;自定义快捷键需用正确command名;Ctrl+Shift+L仅在多行选中后于行尾加光标。

Ctrl+P 不是打开文件,是符号跳转入口
很多人按 Ctrl+P 后只输文件名,漏掉了它真正的高阶用法:符号级导航。它依赖后台索引,不是实时扫描,所以首次使用可能卡顿半秒——右下角状态栏显示“Indexing…”时别急着输。
- 输
@render跳转当前文件的def render或class render,要求 Python 文件语法正确、无缩进错误,否则def不被识别为符号 - 输
@@init搜索整个项目所有init符号(类构造、函数、变量),但前提是项目已添加到侧边栏;纯打开单个文件不触发全局索引 - 输
#header匹配 HTML 的id="header"或 JS 变量header,但右下角语法标签必须是对应语言(如 JavaScript),Plain Text 模式下完全失效 - 输
:42直接跳到第 42 行,比滚鼠标快,且支持负数(:-5跳倒数第 5 行)
Ctrl+D 和 Alt+F3 别混用,行为根本相反
Ctrl+D 是增量选中,Alt+F3 是全量爆破——这不是风格差异,是设计意图完全不同。误混会导致光标失控、粘贴错位,尤其在带注释或字符串的代码里。
-
Ctrl+D:光标停在user_id上,按一次选第一个,再按选第二个……跳过注释里同名字符串,适合精准控制 -
Alt+F3:一按就选中全文所有user_id,不管上下文,也不受正则开关影响;误触后别狂按Esc,先按Ctrl+U(软撤销)回退光标位置 - 想跳过某处匹配?按
Ctrl+K,Ctrl+D(先松开 Ctrl,再按 K 和 D),跳过当前项继续往下选 - 大小写敏感默认开启,若需忽略,在用户设置里加
"case_sensitive": false
自定义快捷键必须写对 command 名,不能靠猜
在 User.sublime-keymap 里写错 command 名,快捷键会静默失效,不报错、不提示。网上搜到的旧教程常含过期命令,比如 js_format 已基本被 eslint_fix 或 black 替代。
- 最稳方法:按
Ctrl+Shift+P打开命令面板,输入功能关键词(如 “delete line”),看到的完整标识就是你要填的command值 - 备用方法:按
Ctrl+`打开控制台,输入sublime.log_commands(True),再手动执行一次目标操作(如菜单里点“删除行”),控制台输出类似:command: run_macro_file {"file": "res://Packages/Default/Delete Line.sublime-macro"} - JSON 格式必须合法:右侧文件是数组,哪怕只加一条也要用方括号
[ ]包裹;末尾多逗号、引号没闭合、用了中文标点,都会导致整份配置失效 - 高频键慎覆盖:比如把
Ctrl+S改成别的,容易打断保存习惯;更稳妥的是加 context 限定,或换组合键(如Ctrl+Alt+L)
Ctrl+Shift+L 不是“选多行”,是“每行末加光标”
这个快捷键常被误解为多行选择工具,其实它只做一件事:把已有选区(必须是多行)拆成多个独立光标,全部落在各行末尾。没选中多行就按,它什么也不干。
- 必须先选中多行:可用
Ctrl+L连按选中多行,或鼠标拖选,再按Ctrl+Shift+L - 典型用途:给 5 行末尾同时加逗号、批量删行尾空格、补分号;某行结尾有空格?光标会落在空格后,删前建议先按
End定位 - 拆完光标后统一缩进?别用
Tab(只影响第一行),用Ctrl+]批量向右缩进 - 配合查找替换更灵活:查
$(行尾锚点)→ 替换为,,就能给每行末尾加逗号;但注意,$在 Sublime 查找里默认不启用正则,得先点左下角的.*按钮
Ctrl+P 能搜未索引的文件、以为 Ctrl+Shift+L 能无选区触发、或者把 Alt+F3 当作安全的“多选替代”。这些地方一旦出错,反而比鼠标点更难回退。


















