【问题标题】:Visual Studio Snippet: Can I use TM_FILENAME to get a namespace from RELATIVE_FILEPATH?Visual Studio Snippet:我可以使用 TM_FILENAME 从 RELATIVE_FILEPATH 获取命名空间吗?
【发布时间】:2021-11-06 15:47:58
【问题描述】:

我现在正在玩 Visual Studio Snippets 一段时间,想知道是否/如何使用 TM_FILENAME 从 RELATIVE_FILEPATH 获取命名空间。例如,我有:

RELATIVE_FILEPATH = src\model\RegisterModel.php

TM_FILENAME = RegisterModel.php

我想从第一个和最后一个 \ 中去掉后者,所以我最终会得到 src\model

如果我使用 RegisterModel.php 作为字符串,我可以让它工作,但如果我使用 TM_FILENAME 作为变量,则不能。这可能吗?

这是有效的:${RELATIVE_FILEPATH/(RegisterModel.php)//gi}

但我想要这样的东西:${RELATIVE_FILEPATH/(TM_FILENAME)//gi}

提前致谢!

【问题讨论】:

  • 已将其添加到帖子中!
  • 看来你输了$,试试${RELATIVE_FILEPATH/${TM_FILENAME}//gi}
  • 我已经试过了,还是不行。可以肯定的是,这是我使用的行:"body": "${RELATIVE_FILEPATH/${TM_FILENAME}//gi}",
  • 奇怪的是这行得通,但这只是去掉了 FILENAME 中也在 FILEPATH 中的一些字符:${RELATIVE_FILEPATH/[${TM_FILENAME}]//gi},结果为:src\od\Rgsrod.php
  • 如果你使用 HyperSnips 扩展,你可以用 JavaScript 编写 sn-p

标签: regex visual-studio-code vscode-snippets


【解决方案1】:

这会让你得到你想要的:

"filepath": {
  "prefix": "rfp",
  "body": [
    "${RELATIVE_FILEPATH/(\\\\[^\\\\]*)$//i}",  // with lots of escapes
  ],
  "description": "directories of current file"
}

${RELATIVE_FILEPATH/${TM_FILENAME}//gi}不起作用,因为根据语法,只有 regex 可以进入转换中的 ${TM_FILENAME} 点。见snippet grammar

语法相关部分:transform ::= '/' regex '/' (format | text)+ '/' options


${RELATIVE_FILEPATH/[${TM_FILENAME}]//gi} 结果:

src\od\Rgsrod.php 因为[${TM_FILENAME}] 被视为正则表达式(只是字面上这些字符的替代列表),因此每个字符都从RELATIVE_FILEPATH 中删除。

【讨论】:

  • 谢谢,伙计!现在我可以更接近我的虚假 PHPStorm 愿景了。
【解决方案2】:

这就是我试图创造的。这个 sn-p 根据文件名和位置创建一个具有正确类名和命名空间的 php 类模板。

所以,sn-p

  "php class": {
    "prefix": "_pclass",
    "body": "<?php\n\nnamespace app\\\\${RELATIVE_FILEPATH/(\\\\[^\\\\]*)$//i};\n\nclass $TM_FILENAME_BASE{\n\n\tpublic function __construct(){}\n\n\tpublic function $1($2){\n\n\t\t$3\n\t}\n}",
    "description": "PHP class"
  }

I:\xampp\htdocs\mvc2\src\core\form\Field.php 中调用创建

<?php

namespace app\src\core\form;

class Field{

    public function __construct(){}

    public function (){

        
    }
}

将光标放在方法名称上。节省了我不少时间,希望对其他人有帮助。

【讨论】:

    猜你喜欢
    • 2012-02-12
    • 2013-10-24
    • 1970-01-01
    • 2015-07-21
    • 2022-01-21
    • 2016-03-02
    • 2017-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多