Ctrl+R仅查当前文件符号且依赖语言模式与保存状态,右下角需设为Python/JS;未保存或Plain Text模式下为空;跨文件用Ctrl+P+@需整目录索引;精准结构搜索用Ctrl+Shift+F正则。

Ctrl+R 只查当前文件,但常为空?先看右下角语言模式
Ctrl+R(Windows/Linux)或 Cmd+R(macOS)本质是读取当前文件的 symbol_list,不是“搜代码”,而是靠语法定义里的正则规则提取符号行。它不解析 AST,也不管你刚写了 def foo() 但还没保存。
右下角显示 Plain Text?点它手动选成 Python 或 JavaScript,否则解析器压根不启动;刚写完函数就按 Ctrl+R 搜不到?先按 Ctrl+S 保存,未保存内容不参与索引。
-
def _helper():在 Python 中默认不出现——这是语法定义行为,非 bug -
func = lambda x: x、functools.partial()进不了列表 - JS 中
const fn = () => {}和obj.method = function() {}基本不可见;要写成function fn() {}或加 JSDoc/** @function */
Ctrl+P + @ 是跨文件跳转最稳的原生方式
Ctrl+P(Windows/Linux)或 Cmd+P(macOS)输入 @my_function,触发的是项目级符号搜索,不依赖插件,但依赖后台索引是否就位。
- 必须通过
Project → Add Folder to Project打开整个目录,单文件模式下基本无效 - 首次添加后等右下角 “
Indexing…” 消失,否则结果为空或漏匹配 - 输入格式必须是
@my_function,不能是my_function@或my_function() - 输
utils.py@parse_config可精准打开指定文件并跳转到该符号 - 输
@render后按空格可切换筛选模式(如只列@ function)
Ctrl+Shift+F 配合正则才是真解法
当你要找的是「符合某种语法结构的函数定义」,比如 JavaScript 里的箭头函数、Python 里的 async def,就得切到全文本搜索模式,靠正则精准定位。
- 打开
Ctrl+Shift+F,勾选.*(正则模式)和Aa(大小写敏感) - Python 找函数定义:
^\s*def\s+[\w]+\s*\(;加^\s*async\s+def\s+单独筛异步函数 - JS 找命名函数:
^\s*function\s+[\w]+\s*\(;找箭头函数:const\s+[\w]+\s*=\s*\([^)]*\)\s*=> - Where 框填
src/**/*.py或**/*.js限定范围,避免扫node_modules - 别漏转义:搜
console.log()必须写成console\.log\(\)
容易被忽略的三个硬限制
再熟练的操作,撞上这几个点都会失效:
-
folder_exclude_patterns里写了"node_modules/",那里面所有index.js里的函数,@和正则都搜不到——排除即不可见,刷新索引也没用 - 新建或重命名函数后,
Ctrl+R和@不会自动更新,得手动Ctrl+Shift+P → Refresh Folders - TS 接口里的方法声明:
interface IApi { getData(): void; }中的getData不进符号列表;动态生成:eval('function x(){}')、Webpack 的require.context加载的模块名,也注定无法被索引


















