ChatGPT解决这个技术问题 Extra ChatGPT

选择在 VS Code 中搜索时要忽略的文件夹

现在,当我使用 +O 搜索文件时,模糊匹配似乎对当前项目中的所有文件都进行了操作。不幸的是,这包括来自构建和供应商目录的许多文件。因此,例如,如果我想搜索所有 JavaScript 文件并执行 +O 并输入 .js,则文件和符号结果包括大约 1500 个匹配项和除了这两个之外,所有这些都是完全的噪音。

有没有办法指定某些目录被忽略以进行搜索?

嗯,等一下,在 2019 年 ⌘O 的意思是“打开文件...”,我怀疑 VS Code 对您可能在那里看到的任何(特定于操作系统的)搜索工具有很大的控制权。它可能能够将文件过滤到仅某些扩展名?
这类似于现在的Command + T吗?当我在全局搜索中为 m 搜索添加前缀 # 时,我会看到来自 node_modules 的内容。
相关设置 我正在寻找:search.useIgnoreFiles search.useGlobalIgnoreFiles(告诉搜索是否要注意 gitignore 中的内容以过滤掉搜索到的内容 - 如果我想要的话,我一般更喜欢关闭它过滤掉一些东西我会明确地让它知道)
CTRL + ,,然后按 search.exclude

S
Shotty

临时排除

在搜索功能中,单击省略号以显示 files to includefiles to exclude 文本框。输入要排除的任何文件和文件夹(以逗号分隔)。

https://i.stack.imgur.com/48uW5.png

持续排除

从菜单中选择 File ➡️ Preferences ➡️ Settings ➡️ User/Workspace Settings 并将默认设置过滤为 search

用户设置将应用于所有工作区

工作区设置将仅应用于此工作区

您可以修改 search.exclude 设置(从默认设置复制到您的用户或工作区设置)。这仅适用于搜索。请注意,将自动应用来自 files.exclude 的设置。

切换搜索排除

在使用 files to exclude 文本框中的齿轮图标进行搜索时,您可以(有时不小心)切换是否启用或禁用了这些排除项。单击省略号,然后单击齿轮图标进行切换。

https://i.stack.imgur.com/GJFax.png

Additional documentation on configuring settings in Visual Studio Code

如果设置不起作用

您可能还需要清除编辑器历史记录(请参阅:https://github.com/Microsoft/vscode/issues/6502)。

例子

我正在开发一个在 tmp 目录下保存数千个文件的 EmberJS 应用程序。

如果您选择搜索字段右侧的 WORKSPACE SETTINGS,则搜索排除将仅应用于该特定项目。相应的 .vscode 文件夹将添加到包含 settings.json 的根文件夹中。

这是我的示例设置:

{
    // ...
    "search.exclude": {
        "**/.git": true,
        "**/node_modules": true,
        "**/bower_components": true,
        "**/tmp": true
    },
    // ...
}

注意:在任何搜索排除的开头包含一个 ** 以涵盖任何文件夹和子文件夹中的搜索词。

更新设置前的搜索图片:

在更新设置之前,搜索结果是一团糟。

https://i.stack.imgur.com/FrgRO.png

更新设置后的搜索图:

更新设置后,搜索结果正是我想要的。

https://i.stack.imgur.com/PRsxF.png


这在最近的版本中已经停止为我工作......知道为什么吗?
有没有办法让它适用于“快速打开”功能?在 PC 上按 Ctrl+P,在 Mac 上按 Cmd+P。当我使用此功能搜索文件时,它们仍然出现。
确保清除您的编辑器历史记录以使其正常工作。 github.com/Microsoft/vscode/issues/6502
我必须运行命令“清除编辑器历史记录”(参见此处:github.com/Microsoft/vscode/issues/6502#issuecomment-273697138)并重新启动 VS Code 才能为我工作。
请注意,搜索文件时可以关闭搜索排除。在搜索区域中,展开“要排除的文件”输入框并确保选择了齿轮图标。这将确保您的搜索排除设置得到遵守。
a
atreeon

https://i.stack.imgur.com/5ep3L.png


如何排除多个文件夹?
@WouterVanherck 您只需添加一个逗号来分隔您要排除的每个文件或文件夹。示例:./src/public/,src/components/
谢谢!我永远不会猜到单击该图标会打开和关闭我的工作区设置。我花了几个小时想我的设置不正确。
C
Christopher Grigg

2018 年 4 月更新

您可以在 vscode 的搜索部分中执行此操作,方法是在要排除的每个文件夹或文件前加上感叹号。

https://i.stack.imgur.com/3cL6e.png


确切地!完美的
P
Pants

我是个白痴,所以我花了一段时间才意识到这一点,但请确保在全局搜索中单击齿轮图标,以便应用您的设置。

https://i.stack.imgur.com/xl8dI.png


你不是白痴,因为这是为我修复它的答案,我过去一定不小心点击了那个图标,这个小图标控制它并不明显,当它被启用或禁用时几乎不引人注意
您当然不是错过了那块美妙的 UX 的白痴,但是您能告诉我您的与 this earlier answer 有何不同,如果是 - 好吧,除了这个答案处于黑暗模式之外? ;^D
@ruffin 没有注意到前面的答案哈!我猜我的用户体验更好(箭头);)
哈! 22 个人和计数同意,所以我该争论谁?至少我没有错过一些明显的东西;谢谢。
为什么这个按钮甚至是一个东西?我在哪个宇宙中设置全局设置,然后想通过一个令人困惑的按钮关闭这些全局设置?
L
Liam

如果这些是您想在某个工作区中忽略的文件夹,您可以转到:

AppMenu > Preferences > Workspace Settings

否则,如果您希望在所有工作区中忽略这些文件夹,请转到:

AppMenu > Preferences > User Settings

并将以下内容添加到您的配置中:

//-------- Search configuration --------

// The folders to exclude when doing a full text search in the workspace.
"search.excludeFolders": [
    ".git",
    "node_modules",
    "bower_components",
    "path/to/other/folder/to/exclude"
],

解释了工作区和用户设置之间的区别in the customization docs


如果它已过时,请更新或删除它以避免混淆和可能的否决!
认真地,进行编辑。以上接受的答案在 macOS 上的最新 VS Code 中有效。因此,放弃您的 BS 以获得支持,并为实际答案做出有用的贡献。
应该接受这个答案的原因是因为它保存了配置文件。
截至 2022 年 7 月 20 日,这是正确答案stackoverflow.com/a/54646625/634586
N
Nahush Farkande

如果我理解正确,您想从 vscode 模糊查找器中排除文件。如果是这样的话,我猜上面的答案是针对旧版本的 vscode 的。对我有用的是添加:

"files.exclude": {
    "**/directory-you-want-to-exclude": true,
    "**/.git": true,
    "**/.svn": true,
    "**/.hg": true,
    "**/CVS": true,
    "**/.DS_Store": true
}

给我的settings.json。这个文件可以通过File>Preferences>Settings打开


仅供参考,这也会从资源管理器窗口中排除这些文件,而不仅仅是搜索
I
Imad Eddin

嗨,您需要找到设置并为历史文件添加新的排除模式

https://i.stack.imgur.com/TLPd2.png


d
david_adler

在你的 vscode 项目中创建这个文件

.vscode/settings.json

{
  "search.exclude": {
    "**/Pods": true,
    "**/node_modules": true,
    "**/*.code-search": true
  }
}

d
domih

简短的回答是在“要排除的文件”中用逗号分隔要忽略的文件夹。

开始工作区范围搜索: CTRL+SHIFT+f 使用三点按钮展开全局搜索 输入您的搜索词 例如,在 files to exclude-input 字段中写入 babel,concat 以排除文件夹“babel”和文件夹搜索中的“concat”(确保启用了排除按钮)。按回车键得到结果。


L
LStarky

我想完全排除 1 个 Workspace 文件夹,但发现这很困难,因为无论排除模式如何,它总是在每个 Workspace 文件夹上运行搜索。

最后,解决方案是将 ** 添加到 文件夹设置 搜索排除模式。

https://i.stack.imgur.com/QBzCP.png


B
Bruno Gimenes

设置前面答案中提到的 search.exclude 和 file.exclude 后,运行命令“清除编辑器历史记录”(使用命令面板执行此操作 - CTRL + SHIFT + P)。

只有在那之后,排除的文件才会出现在您的快速打开菜单上。

更新:您也可以运行“清除命令历史记录”命令。我忘记了。


H
Hamit YILDIRIM

忘记上面的 vscode 排除搜索模式,尝试下面的模式,它适用于 vscode 最新版本中的任何文件夹!

!../../../locales/*

例如,我搜索如下 vscode example clude settings

要包含的文件:*.js

要排除的文件:**/node_modules,!../../../locales/,!../../../theme/,!../../admin/client/*


B
Bhaskara Arani

如果您的工作区中有多个文件夹,请在每个文件夹上设置 search.excludeWORKSPACE SETTINGS 旁边有一个下拉菜单。

Folder Settings Tab


T
Touhid Rahman

扩展 most voted answer,现在有一个扩展来实现那里描述的以 GUI 方式快速切换的功能。它称为 Explorer Exclude。您可以使用以下命令安装它:

ext install RedVanWorkshop.explorer-exclude-vscode-extension

演示:

https://i.stack.imgur.com/efg5X.gif


A
Ambuj Khanna

我确信它现在必须解决,但我只想贡献我的解决方案,这对某人来说可能很容易和有用。

只需在搜索的 exclude field 中输入以下行

*/node_modules/*

无需在工作区/VS Code 的设置文件中设置任何内容。


W
Walter A. Jablonowski

像这样从子文件夹中排除所有作品(2019 版)

包括

./db

排除

./db/*

w
wp78de

由于之前没有提到,一些用户想知道如何在临时搜索中(临时)排除多个文件或文件夹:

您可以使用逗号分隔简化的通配模式列表从搜索中排除多个文件和文件夹(如VS Code's glob.ts来源中所述:

/**
 * Simplified glob matching. Supports a subset of glob patterns:
 * * `*` to match one or more characters in a path segment
 * * `?` to match on one character in a path segment
 * * `**` to match any number of path segments, including none
 * * `{}` to group conditions (e.g. *.{ts,js} matches all TypeScript and JavaScript files)
 * * `[]` to declare a range of characters to match in a path segment (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …)
 * * `[!...]` to negate a range of characters to match in a path segment (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but not `example.0`)
 */

并且不要忘记激活“搜索详细信息”面板 (...) 上的 (⚙-) 使用排除设置和忽略的文件按钮(按照 Shotty 的解释)。

https://i.stack.imgur.com/v4dCP.png


A
Adam

我想在所有文件中搜索术语“Stripe”,除了插件(“plugin”文件夹)或以“.bak”、“.bak2”或“.log”结尾的文件(这是在 wp -wordpress 安装的内容文件夹结构)。

我只想快速地进行一次搜索,所以我不想改变我的环境的搜索设置。这是我的做法(注意文件夹的双星号):

搜索词:条纹

包含文件:{空白}

排除文件:*.bak*、*.log、**/plugins/**

Here's what it looked like


r
reza.cse08

使用 .gitignore 创建一个文件并输入您要忽略的文件夹或文件名。

忽略 node_modules 文件夹下的所有内容

echo node_modules/ > .gitignore 

问题不在于 git