time-geekbang

12 | 极速搜索有时候比Intellisense还重要

★需求

★目标

★单文件搜索

★搜索配置

为啥要配置?——用户不like搜索框某一部分的默认行为,如

  1. 自动填充搜索关键词(搜索editor.find.seedSearchStringFromSelection来关闭它)

还有就是,用户觉得如果选中了多行文本,那么当开始搜索时,应该自动地只在这几行代码里进行搜索,而不是直接的全局搜索,而要达成这样的目的,则需要打开设置“editor.find.autoFindInSelection” 即可!

1564760499773

★单文件替换

搜索到了想要的结果,那么我就得要替换它!

★多文件搜索和替换

1564761670608

如果你要发挥多文件搜索的更大功效,我们可以通过书写配置来决定在哪些子文件夹下进行搜索,以及过滤掉哪些特殊的文件或者文件夹。

相较于单文件搜索,多文件搜索多了两个输入框,那么这两个输入需要填写什么内容呢?

我无中生有的测试了一下,如 05-*写在「包含的文件」这个输入框里边,那么搜索的内容就只能在该文件里边找了,而如果写在「排除的文件」里边,那么除了 05-开头的目录或文件不找,其余的目录和文件都得去匹配搜索!

其实这两个配置的书写格式是 glob,很多编程语言和配置都会使用 glob 来模糊匹配文件名和文件夹。

曾经写过这样的书写格式,如某个前端项目的 karma.conf.js里边:

 {
     files: [
          'dist/**/*.test.js',
          'dist/**/*.test.css'
     ],
 }

但我不知道这是一种叫glob的书写格式。

glob 它最早是出现在类Unix系统的命令行中, 是用来匹配文件路径的。比如,lib/**/*.js匹配 lib 目录下所有的 js 文件

关于它的匹配规则:

不同语言的 glob 库支持的规则会略有不同。下面是 node-glob 的匹配规则。

可以把 **看做是递归搜索!

关于它的使用场景:

➹:glob 介绍 - 简书

★多文件搜索配置

多文件的配置比单文件里的搜索框还要更多一些,你可以打开设置搜索 “search” 看看都有哪些。以下是两个被用户修改比较频繁的设置。

★小结

一个功能丰富且快速的搜索,在很多情况下甚至比语言服务还要来得有用。这是因为,VS Code 里的多文件搜索太快了,就拿我自己来说,当我对某个类或者函数的名字有个大概的印象,我都会使用多文件搜索,进行模糊匹配,基本都能找到想要的结果。这比绞尽脑汁想出到底是哪个具体的类、名字是啥,然后使用语言服务来找到它在哪里被使用了,要快捷得多。虽说很暴力,但不得不说也很有效。

学到了什么?

还需要继续学什么?

★总结

1564765658046

★Q&A

①其它需求?