ctrl+r仅索引当前文件已保存内容的符号,需确保右下角语言模式正确、文件已保存;跨文件跳转须用ctrl+p+@并依赖项目级索引,需添加文件夹到项目、排除路径无误且索引完成。

Ctr+R 只对当前文件有效,跨文件必须用 Ctrl+P + @,否则永远找不到定义。
Ctrl+R 搜不到函数?先看右下角语言模式和保存状态
Ctrl+R 不是“搜代码”,它读的是当前文件的 symbol_list,这个列表由语法定义文件(如 Python.sublime-syntax)按正则规则提取,不解析 AST,也不管你刚写了啥。
- 右下角显示
Plain Text?点它手动选成Python或JavaScript,否则解析器压根不启动 - 刚写完
def my_func():就按 Ctrl+R?先Ctrl+S保存,未保存内容不参与索引 -
def _helper():在 Python 中默认不出现——这是语法定义行为,不是 bug -
const fn = () => {}、obj.method = function() {}、functools.partial()都进不了列表,原生不识别动态声明
Ctrl+P + @ 搜不到跨文件符号?检查索引是否就绪与路径是否被排除
这个操作依赖 Sublime 的项目级符号索引,不是实时扫描,也不是模糊字符串匹配,而是前缀匹配已建好的符号表。
- 必须通过
Project → Add Folder to Project添加整个目录,单文件打开时@基本无效 - 首次添加后等右下角 “
Indexing…” 消失,否则结果为空或漏匹配 - 检查
Preferences → Settings – Project中的folder_exclude_patterns,比如"node_modules/"会直接让里面所有符号不可见 - 输入格式必须是
@my_function,不能是my_function@或my_function() - 大小写默认敏感:
@getData和@getdata是两个符号;临时关闭需在搜索框里按Alt+C(Windows/Linux)
要找 async def、箭头函数、接口方法?别硬试 @,切 Ctrl+Shift+F + 正则
原生符号索引只认语法高亮规则里明确定义的结构,遇到非标准写法,就得靠全文本正则搜索定位定义行。
- Python 找函数定义:
^\s*def\s+[\w]+\s*\(;加^\s*async\s+def\s+单独筛异步函数 - JS 找命名函数:
^\s*function\s+[\w]+\s*\(;找箭头函数:const\s+[\w]+\s*=\s*\([^)]*\)\s*=> - TS 接口里的方法声明:
interface IApi { getData(): void; }中的getData原生不索引,得搜getData\(\):或getData\s*\(\) - Where 框填
src/**/*.py或**/*.ts限定范围,避免扫node_modules - 搜
console.log()必须写成console\.log\(\),括号要转义
精准跳转到某文件某符号:用 filename@symbol 格式
当项目大、同名函数多时,纯 @parse_config 容易列一堆结果。用文件名限定能一步到位,且不依赖额外插件。
-
utils.py@parse_config→ 自动打开utils.py并跳转到该函数定义行 -
api.ts@fetchUser→ 注意扩展名要和实际文件一致(.ts≠.js) - 文件名支持模糊匹配:
user@fetch可能命中userApi.ts里的fetchProfile,但不如全名稳定 - 不支持嵌套:
@MyClass.init不生效,原生只认顶层符号(即MyClass或init单独存在)
真正容易被忽略的,不是快捷键记错,而是索引机制本身有硬边界:新建函数后不保存、语法模式没切对、路径被 folder_exclude_patterns 挡住——这三处任一出问题,所有跳转都会静默失效。











