VS Code 如何进行多行查找?

更新:现在已经原生支持多行查找了。


VS Code 的查找和替换框是单行的,如果粘贴有换行的内容进去,换行符会变成空格,就搜不到结果了。

用正则模式把换行写成字符串的"\n"可以匹配到,但如果字符串里有正则表达式的操作符,如| . 之类的就麻烦了,总不能把每种操作符都转义一遍吧,太麻烦了,而且还可能出错。

请问这个问题有解决办法吗?我根本搜不到相关资料啊,大家平时都不用查找多行文本的吗?

clipboard.png

ps:在github上看到了一个相关的issue,是去年5月份的,时至今日也没有添加这个功能的动静,看来指望不上了。

我觉得多行查找和替换是很有用的功能。此外上面的issue也提到了VS Code 缺少“搜索所有”的功能(search all,在项目文件夹或所有已打开的文件中搜索,并把搜索结果汇总出来)。这点真是太无奈了,当我需要用到这些功能时,只好用sublime text 来完成。

阅读 19.9k
2 个回答

今天有位开发者告诉我,他做的一个扩展可以实现这个功能,我试了一下很有用:

Multiline Find and Replace

它的一个功能就是把选中的文字拷贝为正则表达式,并且把所有的特殊符号进行了转义,使用起来很方便。

使用步骤:

1.选中你要查找的多行文字

2.ctrl+shift+p,输入“copy”执行这个命令:

图片描述

3.粘贴到查找框里使用就可以了(记得开启正则模式)。

图片描述

注意:

VS Code 查找时,如果不使用正则,会在项目中的所有文件里查找。但是使用正则时,只会搜索已打开的文件。这一点在使用的时候要注意。

附:开发者axlan 提交新功能的issue 页面

新手上路,请多包涵

比较无奈,但是还是可以实现的,下面是一个例子,主要是利用\n的匹配,使用.*\n匹配跨行中间的多行,当然了,我这里的场景是不关心中间行的内容的,如果关心中间行的内容的话,正则会比较复杂

栗子:


# 替换以 from 'common';开头,以utils结尾的多行内容,并在utils后添加.default
正则:from\s\'common\';((\n.*)+)=\s(utils)
替换:from 'common';$1= $3.default;

如果错误,敬请指正

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进