如何在一个目录中搜索所有文件中的文本?

有一种方法来搜索文本在一个目录中使用VS Code的所有文件?

例如,如果我在搜索中键入find this,它将搜索当前目录中的所有文件,并返回匹配的文件。

586238 次浏览

我认为这些< >强官方指南< / >强应该适合你的情况。

VS Code允许您快速搜索文件中的所有文件 已打开文件夹。按Ctrl+Shift+F并输入搜索 术语。搜索结果被分组到包含搜索的文件中 术语,并指示每个文件中的命中次数及其位置。 展开一个文件以查看该文件中所有命中项的预览。 然后单击其中一个点击,在编辑器中查看它

您可以执行编辑在文件中查找(或Ctrl+转变+F -默认键绑定,Cmd+转变+F在MacOS上)来搜索当前打开的文件夹。

对话框上有一个省略号,您可以在其中包括/排除文件,以及搜索框中匹配大小写/单词和使用Regex的选项。

在VS Code中…

  1. 转到资源管理器(Ctrl + 转变 + E)
  2. 右键单击您最喜欢的文件夹
  3. 选择“在文件夹中查找”;(# eyz0 + # eyz1 + # eyz2)

搜索查询将在“文件包含”下预填充路径。

一个简单的答案是点击左边栏的放大镜

Ctrl + P (Win, Linux), Cmd + P (Mac) -快速打开,转到文件

默认情况下,此动作不绑定到键,要绑定它,请执行以下操作:

  1. >键盘快捷键(Ctrl + K按Ctrl + S)
  2. 搜索“查找文件夹”
  3. 按下“filesExplorer”左侧的+图标。“findInFolder”搜索结果
  4. 输入所需的组合键
  1. 在搜索中输入关键字(CTRL + SHIFT + F)

  2. 使用Exclude选项排除不需要的文件夹/文件(!)

    例:!文件夹/文件* < / p >

  3. 回车

搜索结果给你想要的结果

  • Ctrl + 转变 + F

    enter image description here

  • 点击搜索框下的3个点。

  • 在搜索框中输入您的查询

  • files to include框中输入./FOLDERNAME,然后单击输入

另一种方法是,右键单击文件夹并选择Find in Folder

如果你在VSCode中打开了一个目录,并且想要搜索一个子目录,那么:

  • ctrl-转变-F然后在files to include字段输入以./开头的路径,

  • ctrl-转变-E打开资源管理器,右键单击要搜索的目录,并选择Find in Folder...选项。

要添加到上面,如果你想在选定的文件夹内搜索,右键单击文件夹,然后单击“在文件夹中查找”或默认键绑定:

# EYZ0 + # EYZ1 + # EYZ2

如前所述,要搜索项目中的所有文件夹,单击编辑>“在文件中查找”或:

# EYZ0 + # EYZ1 + # EYZ2

跨文件搜索-按Ctrl+Shift+F

查找-按Ctrl+F

查找并替换- Ctrl+H

要获得基本的编辑选项,请遵循这个链接- https://code.visualstudio.com/docs/editor/codebasics

注意:对于mac, Ctrl代表命令按钮

顺便说一下,如果你在搜索输入中选择多个文件夹,你可以用逗号分隔目录。适用于排除和包括

例如:# EYZ0

不那么明显的是,您可以使用下面的模式来递归搜索

./src/**/*.html

因此,对于大多数典型的搜索,可以将以下内容作为默认设置,以提醒存在这样的东西

./src/**/

例如,我在左-右对齐/对接内容的属性后,我不记得了,除了“开始”,所以我做了以下搜索,向我揭示了“项目-开始”

enter image description here

这固定了我的布局到 # EYZ0 < / p > < p >代替 # EYZ0 < / p > 下面是“item-sart”在模板中的位置。 # EYZ0 < / p >

选择文件夹 按 + + F 不知道windows,但这适用于mac:)

为了只在一个文件夹中搜索,你必须单击它并按Alt + Shift + F

当你使用Ctrl时,VS Code看起来在所有项目中。

如果你想使用PowerShell搜索并打开当前目录下的所有文本文件:

foreach($file in $(dir -recurse -include *.txt))
{
code $file
}

你也可以更具体一点,甚至改变文件类型:

foreach($file in $(dir <specificDir> -recurse -include *.<anyExtension>))
{
code $file
}

请注意,如果你点击“文件包含”字段右侧的“book”图标,它将在搜索“文件包含”字段中的所有文件和搜索仅打开编辑器中的文件(匹配“文件包含”字段)之间切换。

这可能只有当你知道阅读搜索对话框底部的文本时才会很明显,当你切换图书图标时,它会在以下内容之间发生变化:

在'中没有发现结果。/project_dir/sub_dir' -在所有文件中再次搜索-了解更多信息

这:

在打开的编辑器中没有发现匹配'的结果。/project_dir/sub_dir' -在所有文件中再次搜索-了解更多信息

如果您认为您已经找到了某些东西的所有出现,但实际上您只查看了打开的文件中的所有出现,那么这真的会把您搞得一团糟。

如果您想搜索当前目录/项目目录,但不是单个目录,只需在“files to include”中键入*。在搜索选项卡上。(*表示所有文件)

此外,值得注意的是,当你有“搜索。排除”;配置一些目录,这种配置比搜索更优先。因此,如果我在“搜索。排除”中有node_modules,甚至*也不会显示./node_modules中的文件,所以如果你想显式地包括搜索排除dirs,请创建一个本地设置。./vscode中的Json,并覆盖配置。

VS Code默认动作

命令 快捷方式 命令ID
1. 视图:显示资源管理器 # EYZ0 + # EYZ1 + # EYZ2 # EYZ0
2. 聚焦当前目录 (左箭头)
3. 右键单击/在文件夹中查找… # EYZ0 + # EYZ1 + # EYZ2 # EYZ0
< / div > # EYZ0

默认命令太慢,即使使用键盘快捷键(需要按7次键)。

首先,我们去掉左箭头键。默认情况下,filesExplorer.findInFolder命令要求聚焦一个文件夹。但是,它可以通过搜索文件的父文件夹完美地工作。

  1. 首选项:打开键盘快捷键(CTRL+KCTRL+年代)
  2. 搜索filesExplorer.findInFolder命令。
  3. 右键单击/更改表达式(CTRL+KCTRL+E)
  4. 从When表达式中删除explorerResourceIsFolder需求。结果应该是:explorerViewletVisible && filesExplorerFocus && !inputFocus

现在,在文件夹中查找命令也适用于文件,因此快捷键组合向下一个键。下一个是ALT+转变+F,这很烦人,有两个原因:

  1. 你必须记住什么时候按CTRL,什么时候按ALT,这很容易搞砸。
  2. 一些扩展使用ALT+转变+F进行代码自动格式化——我怀疑这是你想要的副作用。

这就是为什么我建议用一些When表达式魔法将快捷键改为CTRL+转变+F:

  1. 首选项:打开键盘快捷键(CTRL+KCTRL+年代)
  2. 搜索workbench.action.findInFiles并将其When Expression设置为!filesExplorerFocus
  3. 再次搜索filesExplorer.findInFolder并将其键绑定更改为CTRL+转变+F

结果

  1. CTRL+转变+F触发器“在文件夹中查找”;当文件资源管理器被聚焦时,默认的“在文件中查找”;其他地方。
  2. 你必须按CTRL+转变+F到“在文件中查找”,或者按CTRL+转变+ECTRL+转变+F到“在文件夹中查找”。很容易记住。此外,后者可以通过保持CTRL+转变,同时按E,然后按F来优化

用户配置

{
"key": "ctrl+shift+f",
"command": "workbench.action.findInFiles",
"when": "!filesExplorerFocus"
},
{
"key": "ctrl+shift+f",
"command": "filesExplorer.findInFolder",
"when": "explorerViewletVisible && filesExplorerFocus && !inputFocus"
}

警告

filesExplorer.findInFolder命令覆盖“;”文件以包含“;”字段。例如,您可以有一个文件搜索模式*.c,*.cpp,*.h,*.hpp,它现在被文件夹路径覆盖。但是您总是可以在字段中按 (UpArrow)来循环历史记录并恢复以前的模式。

从VSCode版本1.73(2022年10月)开始还有另一个选项

Add "Find in Folder"到上下文菜单中的搜索树

163597年公关实现

https://user-images.githubusercontent.com/31675041/192396545-2bae6f64-7315-42d6-9385-61a44528d0a7.png