【问题标题】:Scoping "Go to Symbol in Workspace" in VSCode to the entire workspace将 VSCode 中的“转到工作区中的符号”范围限定到整个工作区
【发布时间】:2018-06-04 11:49:12
【问题描述】:

我在一个包含多个模块的 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() 的实际定义。

我真的希望 #Foo 的意思是“在我的工作区的任何位置显示符号 Foo 的所有实例”。有没有办法强制这种行为?

【问题讨论】:

  • 你想在你的项目中搜索,还是在 node_modules 的某些包中搜索? VS Code 最近改变了它的行为,默认排除 .gitignore (link) 中的文件/符号。我唯一想到的就是让您尝试应用此设置:"search.useIgnoreFiles": false 在您的settings.json

标签: visual-studio-code vscode-settings


【解决方案1】:

预览功能:vscode v1.45 应该改进跨 javascript 和 typescript 项目的符号搜索,而无需打开所有文件。请参阅 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".


要查看您拥有的 typescript 版本以及如何安装较新版本,请参阅https://stackoverflow.com/a/39676463/836330https://stackoverflow.com/a/47087772/836330 也不错。


v1.46 版本说明:searching for symbols across projects in a workspace

JS/TS Go to Symbol in workspace 包括所有打开的项目

默认情况下,workspace symbol search 对于 JavaScript 和 TypeScript,现在搜索所有打开的 jsconfig 和 tsconfig 项目。它以前只包括来自 项目焦点文件所属的项目。

此行为由typescript.workspaceSymbols.scope 控制 设置并需要 TS 3.9+。恢复到以前的行为和 只搜索当前项目,只设置 "typescript.workspaceSymbols.scope": "currentProject"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    相关资源
    最近更新 更多