Ctrl+T(Windows/Linux)或Cmd+T(macOS)是VSCode中唯一真正有效的全局函数检索入口,依赖语言服务器全量索引,需Pylance/TS配置就绪且服务正常运行。

Ctrl+T 是唯一真正有效的全局函数检索入口
别用 Ctrl+Shift+O 搜整个项目——它只查当前文件。真正能跨文件、跨目录列出所有函数定义的,只有 Ctrl+T(Windows/Linux)或 Cmd+T(macOS)。这个快捷键触发的是 Go to Symbol in Workspace,依赖语言服务器构建的全量符号索引,不是文本扫描。
但前提是语言服务必须就绪:
- Python 项目需启用
Pylance,且配置"python.languageServer": "Pylance";没装或禁用时,Ctrl+T只返回空或模糊文本匹配 - TypeScript/JavaScript 项目必须有
tsconfig.json或jsconfig.json,哪怕内容只是{"compilerOptions": {"allowJs": true}} - 状态栏右下角要显示
Python、TypeScript等标识,而不是Plain Text—— 否则索引根本不会启动
为什么你搜不到函数?先检查这三处硬限制
不是插件没装好,而是函数本身没被语言服务器“看见”。静态分析有明确边界,以下情况一律不索引:
-
obj.fn = function() {}、exports.fn = ...、Object.defineProperty动态挂载的函数 ——Ctrl+T完全无视 - 写在条件块里:
if (false) { function foo() {} },语言服务器跳过执行不可达分支 - Python 中用
lambda赋值:foo = lambda: None,或运行时构造:globals()["foo"] = ...—— Pylance 不解析这类赋值
这些不是 bug,是静态分析的必然取舍。想让函数被检索到,就得用标准声明语法:function foo() {}、def foo():、export const foo = () => {}。
输入技巧:用前缀过滤避免干扰项
Ctrl+T 支持按符号类型强制筛选,输错前缀就容易混入变量、类、接口:
- TypeScript/JavaScript:输入
:function再空格,列表只显示函数(注意冒号) - 部分语言支持
@function,但兼容性不如:function稳定 - 直接输函数名(如
handleClick)也能命中,但若项目里有同名变量或类,结果会杂乱
不要依赖大小写或驼峰自动匹配——有些语言服务器对大小写敏感,handleclick 可能搜不到 handleClick,建议复制粘贴准确名称。
查不到?重启语言服务器比重装插件更管用
90% 的“突然搜不到函数”问题,根源是语言服务器缓存错位或配置未热加载。重启插件或 VSCode 本身往往无效,正确做法是:
- 按
Ctrl+Shift+P打开命令面板 - 输入并执行
Developer: Restart Language Server - 等右下角提示
Language server restarted,再试Ctrl+T
这个动作强制重建符号索引,比删 .vscode 文件夹、重装 Pylance 或 TypeScript 插件快得多,也更精准。真正容易被忽略的是:语言服务器不会自动感知 tsconfig.json 新增的 include 路径,必须手动重启才能生效。


















