使用 VsCode 正则替换

需求背景:

需要把 antd-mobile 的 InputItem 组件做一层封装,然后替换项目中原来所有用到 InputItem 的地方。

import { Flex, InputItem, Button, Toast } from 'antd-mobile';

替换为

import { Flex, Button, Toast } from 'antd-mobile';
import InputItem from '@src/components/common/InputItem';

搜索了一下,发现有100多个文件需要更改

而且还发现有一些格式是多行的

import {
  Flex,
  Button,
  InputItem
} from 'antd-mobile';

一个个改是不可能的,所以这里我用到了 VSCode 的正则替换


解决办法

  1. 先替换多行格式
    先用正则匹配出多行格式的结果
((import\s\{\n(.*\n)*).*)\sInputItem,\n((.*\n)*.*from 'antd-mobile';)
  • \s:空白符
  • \n:换行符
  • .*:匹配任意次数的除了回车符和换行符以外的所有字符
  • ():分组,后面可以用$1、$2...进行捕获

然后将匹配结果进行替换

$2$4\nimport InputItem from '@src/components/common/InputItem';

使用前面 () 捕获的 $2、$4 把 InputItem 前后的代码拼接到一起,再通过换行符 \n 往底下插入新的一行 import

  1. 替换剩下的单行格式
    也是差不多的思路
// 匹配
(.*)InputItem,(.*)
// 替换
$1$2\nimport InputItem from '@src/components/common/InputItem';

最后得到想要的结果

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容