2

我正在尝试找出一种方法来仅从片段中的项目根目录访问文件路径。

我可以访问完整的文件路径,${TM_FILEPATH}但我正在尝试设置一个文件文档片段,它将自动获取添加到文档块的路径,如下所示:

/**
 * app/Controllers/MyClass.php
 *
 * Class summary here.
 *
 * @author Author Name <name@example.com>
 * @copyright  2016 Company Name
 * @package  MyClass
 */

只有TM_FILEPATH我得到这个:

/**
 * /Users/username/Code/project/app/Controllers/MyClass.php
 *
 * Class summary here.
 *
 * @author Author Name <name@example.com>
 * @copyright  2016 Company Name
 * @package  MyClass
 */

有没有办法解析${TM_FILEPATH}以获得我需要的部分,或者是否可以设置一个我可以自己使用${ROOT_PATH}或类似的变量?

4

1 回答 1

2

片段支持 PCRE 兼容的基于正则表达式的替换假设您要保留的路径部分始终以 开头,则app以下替换应该可以满足您的要求:

<snippet>
    <content><![CDATA[${TM_FILEPATH/^\/.*\/(?=\bapp\b)//}]]></content>
    <tabTrigger>filepath</tabTrigger>
    <description>path to current file</description>
    <scope>source.php</scope>
</snippet>

分解它,我们的输入是,那么我们的捕获序列(由TM_FILEPATH分隔/)是一个文字。该组是一个积极的前瞻,断言可以提前匹配,但实际上并没有捕获它。前后的转义字符表示应该被分词字符(包括)包围。这是为了防止匹配这样的路径:^\/.*\/(?=app)^\//.*.*/(?=\bapp\b)app\bappapp/

/Users/username/Code/company_web_app/app/Controllers/SomeClass.php

项目名称在哪里app

最后,格式字符串部分//为空,因为我们只想丢弃匹配项,并保留其余部分。

这是一个示例,更详细地解释了它是如何工作的。

于 2015-12-30T21:08:39.503 回答