我正在使用包含多个模块的VSCode中的TypeScript项目。 “转到工作区中的符号”(CTRL + T)命令似乎将其自身范围扩展到工作空间的本地子集,尽管它的名称(这意味着它的搜索应该是全局的)。
假设我在模块A中定义了Foo()
,它暴露了模块B使用的foo.d.ts
文件,并且我有这个目录结构
root
|
+-- A (folder)
|
+-- B (folder)
我看到以下行为:
#Foo
,则会转到Foo()
的实际定义。好。#Foo
,它只会将我带到A导出的foo.d.ts
- 我必须手动导航到A才能找到实际的定义Foo()
。我真的希望#Foo
表示“在我的工作区中向我展示符号Foo
的所有实例。”有没有办法强迫这种行为?
答案 0 :(得分:1)
预览功能:vscode v1.45应该在不打开所有文件的情况下改进跨javascript和打字稿项目的符号搜索。请参阅https://github.com/microsoft/vscode/issues/11026和https://github.com/microsoft/vscode/issues/11026(仅在您加载了js / ts文件后,js / ts工作区符号搜索才有效)。
添加了新设置:
typescript.workspaceSymbols.scope
。有效 值是:
allOpenProjects
-(默认)在所有打开的项目中搜索符号。 需要TS 3.9 +
currentProject
-仅搜索当前项目
#11026
对此进行了改进。您不再需要打开JS / TS文件即可进行工作区符号搜索,现在我们可以在所有JS / TS中进行搜索 您知道的项目。如果您使用的是TS 3.9,则默认情况下应搜索所有项目
在旧版TS上,仅应搜索当前项目。如果 使用TS 3.9,您可以切换为仅搜索当前项目 设置:
"typescript.workspaceSymbols.scope": "currentProject"
但是我们仍然需要您打开JS / TS文件
使用TypeScript 3.9+时,VS Code的workspace symbol search 现在包括所有打开的JavaScript和TypeScript的结果 默认情况下是项目。我们之前只搜索了 当前处于活动状态的文件。
这由新的
"typescript.workspaceSymbols.scope"
控制 设置。要恢复到旧的行为,只需设置:"typescript.workspaceSymbols.scope": "currentProject"
。
要查看打字稿的版本以及如何安装较新的版本,请参阅https://stackoverflow.com/a/39676463/836330。 https://stackoverflow.com/a/47087772/836330很好。
v1.46发行说明:searching for symbols across projects in a workspace
JS / TS转到工作区中的符号包括所有打开的项目
默认情况下,workspace symbol search 对于JavaScript和TypeScript,现在搜索所有打开的jsconfig和 tsconfig项目。以前仅包含来自 投影所关注的文件所属的
此行为由
typescript.workspaceSymbols.scope
控制 设置,并且要求TS 3.9+。将还原为以前的行为,并 只搜索当前项目,只需设置"typescript.workspaceSymbols.scope": "currentProject"