【问题标题】:Access Project Root Path in Sublime Text 3 Snippet在 Sublime Text 3 Snippet 中访问项目根路径
【发布时间】:2015-12-30 03:10:20
【问题描述】:

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

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

/**
 * 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} 或类似的?

【问题讨论】:

标签: sublimetext3 sublimetext-snippet


【解决方案1】:

片段支持 PCRE 兼容的基于正则表达式的substitutions。以下替换应该可以满足您的要求,假设您要保留的路径部分始终以 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) 组是正向前瞻,断言 @987654336 @ 可以提前匹配,但实际上并没有捕获它。app 前后的\b 转义字符表示app 应该被分词字符包围(包括/)。这是为了保护反对匹配这样的路径:

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

app 在项目名称中。

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

这是example 更详细地解释了它是如何工作的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-25
    • 2016-10-02
    • 2017-05-10
    • 1970-01-01
    相关资源
    最近更新 更多