2015-12-30 33 views
1

我試圖找出一種方法來從代碼片段中的項目根目錄下訪問文件路徑。訪問在崇高文本中的項目根路徑3片段

我可以訪問${TM_FILEPATH}完整的文件路徑,但我試圖建立一個文件的文件片段,將自動獲得的路徑添加到文檔塊,像這樣:

/** 
* app/Controllers/MyClass.php 
* 
* Class summary here. 
* 
* @author Author Name <[email protected]> 
* @copyright 2016 Company Name 
* @package MyClass 
*/ 

TM_FILEPATH我得到這個:

/** 
* /Users/username/Code/project/app/Controllers/MyClass.php 
* 
* Class summary here. 
* 
* @author Author Name <[email protected]> 
* @copyright 2016 Company Name 
* @package MyClass 
*/ 

有沒有一種方法來解析${TM_FILEPATH}得到的只是我需要的部分,或是否有可能建立一個變量,我可以用自己喜歡${ROOT_PATH}或類似的?

+0

根據[文檔片段](http://docs.sublimetext.info/en/latest/extensibility/snippets.html?highlight=Environment+Variables#snippet-features),您可以訪問環境變量。也許這是一個想法,在Python中創建一個簡單的插件,將設置一個環境變量到項目的路徑。 ([插件可以訪問'self.view.window().project_file_name()'](http://www.sublimetext.com/docs/3/api_reference.html#sublime.Window)) –

回答

2

片段支持PCRE兼容的基於正則表達式的substitutions。下面的替代應該做你要找什麼,假設你要始終保持路徑的一部分與app開始:

​​

要打破它,我們的投入是TM_FILEPATH,那麼我們捕獲序列(由/分隔)是^\/.*\/(?=app)^的字符串的開頭相匹配,\/是字面/字符,.*匹配任何長度(*)的任何字符(.)的任何序列。該捕獲序列結束與文字/(?=\bapp\b)組是積極的前瞻,斷言app可以提前匹配,但實際上並沒有捕獲它。在app之前和之後的\b轉義字符指示app應該被字間斷字符(其包括/)包圍。這是爲了防止匹配這樣的路徑:

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

其中app是項目的名稱。

最後,格式字符串部分//是空的,因爲我們只是想丟棄匹配,而剩下的部分不變。

這是一個example更詳細地解釋它是如何工作的。

+0

BRILLIANT!完美的作品,非常感謝馬特! –