今天来看一下编辑器自带的文本搜索功能,快速地穿梭于海量的代码之中

一个功能丰富且快速的搜索,在很多情况下甚至会比语言服务还要来得有用

单文件搜索

把光标放在编辑器当中,然后按下 Ctrl + F,就能够快速地调出搜索窗口

调出搜索窗口的时候,编辑器就会把当前光标所在位置的单词自动填充到搜索框中

与此同时,当前文件里和搜索关键词相同的单词都会被高亮出来

自动填充搜索关键词的好处在于,当我们按下 Ctrl + F搜索这个单词之后,还能够立刻通过回车键或者shift+回车键 在所有搜索结果当中快速跳转

这里需要注意的事情是,当开始搜索的时候,光标已经被移动到了搜索框当中,如果在这时候继续打字的话,那原有的搜索关键词将会被修改

如果希望找到搜索结果后,接下来就直接修改编辑器中的内容,那么就得将光标重新移动到编辑器当中

这种情况下,不妨换一个快捷键

首先将光标移动到我们想要搜索的单词处,然后按下 F3,此时同样调出了搜索框,但与前面Ctrl + F这个快捷键不同的是,这时光标依然是在编辑器当中,而不是在搜索框中

然后我们通过不断按下F3就能够在搜索结果之间自上而下地循环跳转,这时只需直接打字就能对代码进行修改了

如果想要在搜索结果里自下而上地跳转,也是可以通过快捷键实现的,只需多增加一个 shift 键即可,也就是按下 Shift + F3来实现自下而上的跳转

注意:在搜索框中打字的时候,搜索操作是自动触发的,而无需再按下回车键去手动地执行搜索这个操作

除了搜索纯文本以外,搜索框还支持多种不同的搜索方式

比如,在搜索框的最右侧,就有三个配置按钮

第一个是大小写敏感

这个很好理解,就是在文档中搜索关键词的时候,搜索的结果是否要跟关键词大小写完全一致

默认情况下,VS Code 的搜索是不区分大小写的,也就是说哪怕大小写不一样,也会算到搜索结果里去

但如果不想要这个特性,就可以点击这个按钮,或者按下上是 Alt + C来关闭它

第二个是全单词匹配

有的时候我们搜索的单词恰好是别的某个单词中间的一部分,如果不希望这样的结果出现在搜索结果中,那么就可以点击这个按钮或按下 Alt + W 来关闭它

第三个,就是正则表达式匹配了

当我们点击这个按钮或按下 Alt + R,就能够打开正则表达式的支持,然后在搜索框中输入正则表达式来搜索

要注意的是,编辑器中的这个搜索框,它里面的正则表达式使用的是 JavaScript 的正则引擎

这三个功能的快捷键的配置,它们分别使用了 Case、Word 和 Regular Expression 的第一个字母作为快捷键的一部分,若你知道是这几个单词,那对应的快捷键就不会容易忘了

除了这三个搜索设置以外,在搜索窗口关闭按钮的左侧,相信你还能看到一个特别的图标

那这个按钮的功能是什么呢?

我们可以先选中一段文本,然后按下 Ctrl+ F 调出搜索框,这之后点击这个按钮,就可以将这段文本的范围设置为接下来的搜索区域

然后当我们在输入框里输入关键字后,编辑器就只会在这个区域里进行搜索

搜索配置

上面我们提到的功能,都是 VS Code 的默认行为

但也有部分用户不喜欢搜索框的一部分行为,比如说自动填充搜索关键词,那你可以打开设置,搜索 “editor.find.seedSearchStringFromSelection” 来关闭它

也有个别用户觉得,如果选中了多行文本,那么当开始搜索时,应该自动地只在这几行代码里进行搜索,你则需要打开设置 “editor.find.autoFindInSelection”

单文件替换

在搜索到想要的结果之后,可以直接在文件中进行修改,也可以使用替换窗口进行批量替换

只需用鼠标点一下搜索窗口最左侧的箭头按钮即可打开替换框

替换框的后面,一共有两个按钮:第一个能够替换单个搜索结果,第二个则能够替换全部的搜索结果

查看对应的快捷键,只需把鼠标指针移动到它们上面,就能够看到了

也可以通过快捷键直接调出替换窗口,最常用的命令就是按下 Ctrl + H键,这样当前光标所在的单词就会被用作为搜索关键词,同时编辑器将光标移动到替换窗口中,只需直接输入想要替换的关键词就行了

当然,如果在书写完替换文本后,觉得搜索关键词需要修改,那你可以按下 Shift + Tab 键将光标移动到上面的搜索输入框里

Tab 和 Shift + Tab 键能够帮助你在这两个输入框直接进行跳转

多文件搜索和替换

多文件搜索的运行方法跟单文件搜索非常类似,通过按下Ctrl + Shift + F 来调出多文件搜索的视图

在这样一个视图中,我们看到了熟悉的搜索输入框,以及大小写敏感、全单词匹配和正则表达式三个配置按钮

搜索框的左侧则是下拉按钮,点击即可调出替换框

默认情况下,调出多文件搜索的视图时,VS Code 会在当前打开的文件夹下进行搜索

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

要完成这样的配置,需要点击搜索框下三个点形状的图标,点开后,能看到两个输入框,它们的名字分别是“包含的文件” 和 “排除的文件”

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

扩展

glob:是用来返回匹配指定模式的文件名或目录,所谓的 glob 模式是指 shell 所使用的简化了的正则表达式

星号(*)匹配零个或多个任意字符

[abc]匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c)

问号(?)只匹配一个任意字符

多文件搜索配置

多文件的配置比单文件里的搜索框还要更多一些,你可以打开设置搜索 “search” 看看都有哪些,这里仅介绍常用的两个

第一个是 “search.collapseResults”

它是用来控制是否自动展开搜索结果

默认的配置是 “auto” 自动, 也就是说,VS Code 会根据搜索结果的多少来决定是否要将某个文件下的搜索结果展开,如果某个文件夹下的结果过多的话,就会将其暂时折叠,用户需要展开结果

第二个是 “search.location” ,也就是多文件搜索视图的位置

默认情况下,搜索视图会出现在侧边栏

但是 VS Code 同样允许你把搜索视图放到底部面板中去,你只需将其修改为 “panel” 即可

文章开头说,一个功能丰富且快速的搜索,在很多情况下甚至比语言服务还要来得有用

这是因为,VS Code 里的多文件搜索太快了,当我对某个类或者函数的名字有个大概的印象,我都会使用多文件搜索,进行模糊匹配,基本都能找到想要的结果

这比绞尽脑汁想出到底是哪个具体的类、名字是啥,然后使用语言服务来找到它在哪里被使用了,要快捷得多,虽说很暴力,但不得不说也很有效

好了,搜索就介绍到这,我们下篇文章见~

2+

vscode查找函数名_vscode学习笔记(三):搜索相关推荐

  1. 大数据HiveSQL学习笔记三-查询基础语法以及常用函数

    大数据HiveSQL学习笔记三-查询基础语法以及常用函数 一.基础语法 1.SELECT -列名- FROM -表名- WHERE -筛选条件- 如:需要根据城市,性别找出匹配的10个用户 user_ ...

  2. MYSQL学习笔记三:日期和时间函数

    MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...

  3. Python学习笔记三之编程练习:循环、迭代器与函数

    Python学习笔记三之编程练习 1. 编程第一步 # 求解斐波纳契数列 #/user/bin/python3#Fibonacci series:斐波那契数列 #两个元素的总和确定了下一个数 a,b= ...

  4. Hive学习笔记三之函数操作

    文章目录 5 函数 5.1 系统内置函数 5.2 常用内置函数 5.2.1 空字段赋值 5.2.2 CASE WHEN THEN ELSE END(类似于java中的switch case) 5.2. ...

  5. python3常用模块_Python学习笔记三(常用模块)

    Python 学习笔记三 (常用模块) 1.os模块 os模块包装了不同操作系统的通用接口,使用户在不同操作系统下,可以使用相同的函数接口,返回相同结构的结果. os.name:返回当前操作系统名称( ...

  6. MySQL学习笔记(三)查询

    写在前面:本篇为作者自学总结,学习内容为课堂所学和网络学习笔记汇总,对于内容引用部分在文中和文末注明. 文章仅供参考,如需深入了解,请查阅MySQL参考手册.附上下载链接: 链接:https://pa ...

  7. 【AngularJs学习笔记三】Grunt任务管理器

    为什么80%的码农都做不了架构师?>>>    #0 系列目录# AngularJs学习笔记 [AngularJs学习笔记一]Bower解决js的依赖管理 [AngularJs学习笔 ...

  8. Python基础学习笔记三

    Python基础学习笔记三 print和import print可以用,分割变量来输出 import copy import copy as co from copy import deepcopy ...

  9. SurfaceFlinger学习笔记(三)之SurfaceFlinger进程

    概述 本系列是基于android Q 即android10 SurfaceFlinger学习笔记(一)应用启动流程 SurfaceFlinger学习笔记(二)之Surface SurfaceFling ...

最新文章

  1. Facebook的实时Hadoop系统
  2. 在没有工具的情况下检查SSD 的TRIM功能有没有打开
  3. Almost Regular Bracket Sequence
  4. 二叉树序列化与反序列化相关题目(Leetcode题解-Python语言)
  5. 阿里云HiShop海商创新合作—线上商城这样做更合适
  6. XML模板解析————Dom4j解析xml案例分析
  7. POS tagging中英文对应
  8. 移动端前端UI框架推荐
  9. 关于Protel 2004 绘制电路原理图
  10. 质点系的角动量与角动量定理
  11. 谷歌浏览器无法上网,其他浏览器正常,换chrome搜索引擎
  12. 模式识别学习笔记(8)——隐马尔可夫模型
  13. 关于QRCODE二维码使用彩色进行扩容的思考
  14. linux samba 断点续传,利用cURL实现单个文件分多段同时下载,支持断点续传
  15. 富途牛牛A股数据API使用基础教程
  16. 超爆笑段子大集锦 你要不笑我自宫
  17. Inspect的学习笔记
  18. [Go实战]怎么写测试类,运用testing.T
  19. No appenders could be found for logger
  20. 【Oracle】数据字典初步理解

热门文章

  1. supper 关键字
  2. php网盘 共享 直链,PHP比较简单的百度网盘文件直链的实现方法
  3. 为什么不能直接通过IP访问网站
  4. uniapp接入微信客服聊天流程(企业微信)
  5. IPFS为数据隐私保驾护航
  6. 慢性疲劳免疫失调综合症(CFIDS)
  7. 黑客:iPhone的这些脑残功能逼我去越狱 苹果:乖,招安是我强项!
  8. Pixie: A System for Recommending 3+ Billion Items to 200+ Million Users in Real-Time简介
  9. 批处理、分时、实时各个操作系统特点
  10. YOLOv5全面解析教程③:更快更好的边界框回归损失