【问题标题】:Multiple Transforms for VSCode SnippetVSCode Snippet 的多重转换
【发布时间】:2023-03-24 13:43:01
【问题描述】:

我已经设置了一些 sn-p 并按照我的意愿工作,但是我很难让一个 sn-p 在我认为需要进行多次转换的地方工作?

基本上我为我的一个组件定义了一个 TypeScript 接口。

IRadioButtonListProps.ts 位于 Interfaces 文件夹内。 Interfaces 文件夹有一个名为 Theme 的同级文件夹,其中包含一个名为 IRadioButtonListTheme.ts 的接口

IRadioButtonListProps 内部,我正在尝试删除整个界面。我目前的 sn-p 将接口存根,例如...

import * as React from 'react';
import IRadioButtonListPropsTheme from '../Theme/IRadioButtonListPropsTheme';

export interface IRadioButtonListPropsProps {
    ...props...
}

export default IRadioButtonListPropsProps;

sn-p里面的导入行是...

"import I${TM_FILENAME_BASE/(.*)\\..+$/$1/}Props from './Interfaces/I${TM_FILENAME_BASE/(.*)\\..+$/$1/}Props';"

我试图发生但似乎无法弄清楚的是如何删除“道具”一词。所以我会得到 import import IRadioButtonListTheme... 而不是 import IRadioButtonListPropsTheme...

同时,我想删除所有扩展名,包括 *.abc.abc(“两个”扩展名)和 *.abc(一个简单扩展名)形式的扩展名。

这可能吗?

【问题讨论】:

  • (.*)\\..+$ 应该匹配什么?
  • code.visualstudio.com/docs/editor/… 如果文件名有扩展名,这将删除扩展名。
  • 尝试将(.*)\\..+$更改为(.*?)(?:Props)?\\.[^.]+$
  • 这并没有像我尝试的那样中断,但它也没有改变输出。

标签: regex visual-studio-code


【解决方案1】:

不清楚你要做什么,但试试看:

"import ${TM_FILENAME/((\\w*)Props)*?(\\..*)/$2/}Theme from './Interfaces/${TM_FILENAME/((\\w*)Props)*?(\\..*)/$2/}Theme';"

导致:

import IRadioButtonListTheme from './Interfaces/IRadioButtonListTheme';

来自IRadioButtonListProps.ts

import CheckboxListTheme from './Interfaces/CheckboxListTheme';

来自CheckboxListProps.test.tsx

[编辑]这是一个我认为也可以使用的更简单的版本:

 "import ${TM_FILENAME/(Props)*?(\\..*)//}Theme from './Interfaces/${TM_FILENAME/(Props)*?(\\..*)//}Theme';"
  1. 匹配任何“道具”,如果有的话,替换为空。
  2. 从第一个 \ 匹配。到文件名的末尾,替换为空。

【讨论】:

  • 这确实删除了 Props 这个词,但不再确保没有扩展名。一些 sn-ps 用于名称类似于 CheckboxList.test.tsx 的测试文件。我使用TM_FILENAME_BASE 删除.tsx,然后使用现有转换删除.test
  • 因此,您的一个意图是删除第一个 . (点)?在 CheckboxList.test.tsx 上运行 sn-p 应该为 import 语句生成什么?
  • CheckboxList.test.tsxCheckboxListProps.test.tsx 都应该产生CheckboxList(就转换而言)。
  • 我编辑了上面的答案以解决您的多个扩展cae场景。
  • 您是否可以包含一个转换来抓取TM_DIRECTORY 生成的路径中的最后一个目录?即c:\a\b\c\d\e 将产生e
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-13
  • 1970-01-01
  • 1970-01-01
  • 2013-06-27
  • 2021-04-17
  • 1970-01-01
相关资源
最近更新 更多