Ctrl+R空白是因为未正确识别语法或未保存文件;需先将右下角设为Python/JavaScript等具体语言,并保存文件以触发symbol_list缓存重建,否则无法读取函数列表。

Ctrl+R 为什么空白?先看右下角语法和保存状态
它不是“搜函数”,而是读当前文件的 symbol_list 缓存,这个缓存由语法高亮规则生成,不识别未保存内容,也不启动于 Plain Text 模式。
- 右下角显示
Plain Text?点它手动选成Python、JavaScript等具体语言,否则解析器压根不运行 - 刚写完
def helper()就按Ctrl+R?先Ctrl+S保存,未保存的修改不会触发索引重建 -
Python中_private_func默认不出现在列表里——这是语法定义行为,不是 bug;JS中const fn = () => {}同样不被原生识别,得改用function fn() {}或加/** @function */注释
Ctrl+P @xxx 是跨文件跳转最稳的原生方式
它不依赖插件,靠 Sublime 自带的项目级索引,但前提是索引已建好、路径被纳入扫描范围。
- 输入格式必须是
@parse_config(开头带@),不能输parse_config@或parse_config() -
utils.py@parse_config→ 直接打开utils.py并跳到该函数定义行 - 首次在大项目中使用会卡顿 2–5 秒——这是后台构建索引,等右下角 “Indexing…” 消失再操作
- 确保项目已通过
Project → Add Folder to Project添加根目录;单文件模式下@搜索基本无效
F12 / Ctrl+Click 跳不到?不是快捷键坏了,是链路没接上
Sublime 原生 goto_definition 命令默认不实现,实际由插件接管。F12 和 Ctrl+Click 只是触发这个命令,背后没人干活就白按。
- 没装 LSP 或 CTags 插件?那 F12 就是空操作,连错误提示都不会有
- 装了 LSP 但状态栏没出现图标、命令面板搜不到
Go to Definition、Console 报Failed to start language server——说明服务器根本没起来 - Pyright 要求项目根目录存在
pyproject.toml(哪怕只有[tool]),否则退化为文本匹配,第三方库如requests.get就跳不进去 - 想跳进真实
.py而非.pyi,得在 LSP 设置里加"python.analysis.extraPaths": ["path/to/site-packages"]
CTags 是轻量可靠的备选,但它漏动态代码
它不联网、不依赖 Python 环境、不启动后台进程,靠本地 tags 文件查表,适合老旧项目或 CI 场景。
- 先装
universal-ctags(不是老版 exuberant),运行:ctags -R --python-kinds=+i --exclude=.git --exclude=__pycache__ . - Sublime 安装
CTags插件后,右键项目根目录 →CTags: Rebuild Tags,否则快捷键无反应 -
getattr(obj, "func")、装饰器包裹的函数、functools.partial()、obj.method = lambda: ...—— 全部漏掉,因为 tags 只认静态声明 - 跳转方式:
Ctrl+Alt+Click(需插件启用)、Ctrl+Shift+T模糊搜索、或右键 →Goto Definition
真正容易被忽略的是:所有跳转能力都建立在「文件类型被正确识别」基础上。如果右下角显示的是 Plain Text 而不是 Python 或 JavaScript,连 Ctrl+R 都会失效——先点那里手动选对语法模式,再谈跳转。

















