在VSCode中将“转到Workspace中的符号”确定为整个工作区

时间:2017-12-21 18:53:56

标签: visual-studio-code

我正在使用包含多个模块的VSCode中的TypeScript项目。 “转到工作区中的符号”(CTRL + T)命令似乎将其自身范围扩展到工作空间的本地子集,尽管它的名称(这意味着它的搜索应该是全局的)。

假设我在模块A中定义了Foo(),它暴露了模块B使用的foo.d.ts文件,并且我有这个目录结构

 root
 |
 +-- A (folder)
 |
 +-- B (folder)

我看到以下行为:

  1. 如果我在A中编辑文件并搜索#Foo,则会转到Foo()的实际定义。好。
  2. 但如果我在B中编辑文件并搜索#Foo,它只会将我带到A导出的foo.d.ts - 我必须手动导航到A才能找到实际的定义Foo()
  3. 我真的希望#Foo表示“在我的工作区中向我展示符号Foo的所有实例。”有没有办法强迫这种行为?

1 个答案:

答案 0 :(得分:1)

预览功能:vscode v1.45应该在不打开所有文件的情况下改进跨javascript和打字稿项目的符号搜索。请参阅https://github.com/microsoft/vscode/issues/11026https://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文件

  • 第二个链接上方。

另请参见v1.45发行说明:https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_45.md#workspace-symbol-search-in-all-open-typescriptjavascript-projects

使用TypeScript 3.9+时,VS Code的workspace symbol search 现在包括所有打开的JavaScript和TypeScript的结果 默认情况下是项目。我们之前只搜索了 当前处于活动状态的文件。

这由新的"typescript.workspaceSymbols.scope"控制 设置。要恢复到旧的行为,只需设置: "typescript.workspaceSymbols.scope": "currentProject"


要查看打字稿的版本以及如何安装较新的版本,请参阅https://stackoverflow.com/a/39676463/836330https://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"