vscode片段-多个正则表达式转换文件路径+文件名



经过1周的搜索和尝试,我创建了这个问题,希望有人愿意帮助我解决这个问题:

我的VsCode片段应该转换以下内容:

D:FolderXFolderYsrcFolder1Folder2Folder3

为:

FOLDER1_FOLDER2_FOLDER3_FILENAMEBASE

Folder3可以是可选的

到目前为止出现的是:

"body": [
"${TM_DIRECTORY/^.+(src\\)(.*)$/${2:/upcase}${3:/upcase}/g}_${TM_FILENAME_BASE/(.*)/${1:/upcase}/}",
],

,目前的结果是:

FOLDER1FODLER2FOLDER3_FILENAMEBASE

所以我现在需要做的就是把变成_,但如果可能的话,我想在一次变换中完成。谁有一个想法或更好的解决方案,我的问题?
谢谢你

可以使用

"body": [
"${TM_DIRECTORY/^(?:.*\\)?src\\|([^\\]+)|(\\)/${1:/upcase}${2:+_}/g}_${TM_FILENAME_BASE/.+/${0:/upcase}/}",
],

细节:

  • ^-字符串
  • 起始
  • (?:.*\\)?-任何零或多个字符的可选序列,除了换行符,尽可能多,然后
  • src\\-srcstring
  • |-或
  • ([^\\]+)-组2:
  • 以外的一个或多个字符
  • |-或
  • (\\)- Group 3: achar.

${1:/upcase}${2:+_}替换意味着组1总是返回大写,如果组2匹配(字符),它将被替换为_字符。

${TM_FILENAME_BASE/.+/${0:/upcase}/}被简化了,因为有一个$0反向引用到整个匹配,不需要用捕获组包装整个模式。

这个答案与问题没有直接关系,但是,这是因为@Wiktor Stribiżew的答案,我设法使我的代码片段工作,经过几个小时的时间。

我正在修改dsznajder - ES7+ React/Redux/React- native片段中的标准rfce片段。

我在react dev中使用以下结构:

src
|--components
|----NavBar
|------index.css
|------index.jsx

因此,在创建功能组件时,我需要使用文件夹的实际名称而不是文件名来创建它们。因此,下面是完整的代码片段,我在自定义javascriptReact代码片段中创建了它:

{
"reactFunctionalExportComponent": {
"prefix": "rfce_",
"body": [
"import './index.css';",
"",
"function ${1:${TM_DIRECTORY/^(?:.*\\)/$1/g}}() {",
"  return(",
"    <div>",
"      <h1>${1:${TM_DIRECTORY/^(?:.*\\)/$1/g}}</h1>",
"    </div>",
"  );",
"}",
"",
"export default ${1:${TM_DIRECTORY/^(?:.*\\)/$1/g}};",
""
],
"description": "Creates a React Functional Component with ES7 module system"
}
}

结果如下:

import "./index.css";
function NavBar() {
return (
<div>
<h1>NavBar</h1>
</div>
);
}
export default NavBar;

我对类组件和箭头函数也做了类似的修改。

相关内容

  • 没有找到相关文章

最新更新