0

我想在 VScode 片段上选择 TM_DIRECTORY 变量的一部分。Tests\Setup我的意思是我想选择d:\Projects\Hakhsin\hakhsin\tests\Setupin code-snippet 文件。看这个:

// On snippet file
"PHP Class": {
        "scope": "",
        "prefix": ["phpClass"],
        "body": [
            "<?php\n\nnamespace ${TM_DIRECTORY/(?<=(?:[\w:\\]hakhsin\\)).+(?=\\)//};\n\nclass ${TM_FILENAME_BASE} {\n\t$2\n}"
        ],
        "description": "New PHP Class"
    },

我想得到这个结果:


namespace Tests\Setup;

class StorageFactory {

}

但我得到了这个结果:

<?php

namespace d:\Projects\Hakhsin\hakhsin\tests\Setup;

class StorageFactory {

}
4

2 回答 2

0

我解决了它,但它不是动态的。

namespace ${TM_DIRECTORY/(.*hakhsin\\\\)(.*)/${2:/capitalize}/};

有没有更好的办法?像这样的东西:

namespace ${TM_DIRECTORY/(.*${WORKSPACE_NAME}\\\\)(.*)/${2:/capitalize}/};

这是结果:

<?php

namespace Tests\Setup;

class StorageFactory {

}
于 2019-07-31T09:28:08.423 回答
0

您似乎无法在片段转换中使用其他变量中的变量。

你可以试试这个比你的更“动态”但不完美的代码:

"${TM_DIRECTORY/([^\\\\]*\\\\){4}(.*)/${2:/capitalize}/}",

也就是说,{4}如果您在想要的部分之前的目录结构中有 4 个段,例如段d:\Projects\Hakhsin\hakhsin\tests\Setupd:\,Projects\和. 如果该段数已知且稳定,那么我展示的片段效果很好。Hakhsin\hakhsin\

我怀疑这些段的数量在一个项目中会有所不同,但在项目之间可能会很好——如果是这样,你只需要更改{x}每个项目的项目。

于 2019-07-31T14:31:02.030 回答