領先一步
VMware 提供培訓和認證,助您加速進步。
瞭解更多我們最近釋出了 Scripted Editor 0.3,並正在快速推進下一個版本。Scripted Editor 0.4 的主要目標之一是可擴充套件性,而可擴充套件性故事的一部分是一個簡單、可擴充套件的模板機制(另一部分是一個強大的外掛模型,將在未來的部落格文章中描述)。在這篇文章中,我將介紹 Scripted 編輯器的自定義程式碼完成和模板。
Sublime Text 是一款優秀的通用編輯器。它具有高度可配置性,許多 Scripted 使用者也使用 Sublime。因此,我們希望在合理的情況下,讓 Sublime 的擴充套件與 Scripted 相容。其中一個領域是 sublime-completions 檔案。這些檔案為給定的內容型別(通常對映到副檔名)指定了補全列表。Scripted 允許您原樣使用這些補全檔案,並提供了一些額外的功能。
首先,我將解釋如何使用現有的 sublime-completions 檔案,然後我將展示如何建立新檔案,最後我將展示我們在 Sublime Text 支援的基礎上新增的一些額外功能,以及它們在編輯器中如何體現。
*.sublime-completions 檔案重新命名為 *.scripted-completions 並將其放置在您的 ${user.home}/.scriptedrc 目錄中。補全檔案也存在於 scripted/completions 目錄中,但這些補全是由 scripted 本身提供的,並且在每次升級時都會被覆蓋。例如
PHP.sublime-completions 檔案放置在您的 .scriptedrc 目錄中。在 Mac 上,此檔案可以在 ${HOME}/Library/Application Support/Sublime Text 2/Packages/PHP/PHP.sublime-completions 找到。PHP.scripted-completions。scr -r)以載入新檔案(請記住……Scripted 是一個 Node 應用程式)。選擇一個建議將顯示此內容
就是這麼簡單。
讓我們以 PHP 補全的簡化部分為例。
第一行是 scope,由 Sublime 和 Scripted 用於確定補全處於活動狀態的上下文。Scripted 只識別 scope 第一個單詞的副檔名(例如 php)來確定這些補全在哪些型別的檔案中處於活動狀態。Sublime 對 scope 有更復雜的概念,這些概念尚未在 Scripted 中實現。接下來是補全陣列。單個字串元素(例如 php)會將該條目新增到內容輔助建議列表中,如果字首匹配。稍微複雜一點的是帶有 trigger 和 contents 的條目。trigger 指的是觸發補全出現在建議列表中的文字。內容部分是替換觸發器的文字。$1、$2 等指的是編輯時的製表位。製表位可以命名為 ${1:text}。$0 是轉義位置,即按下回車鍵後游標將跳轉到的位置。如果未指定,轉義位置預設為補全的最後一個字元之後。sublime-completions 和 scripted-completions 之間有一些需要注意的區別。
檔案中的任何錯誤都將記錄在 ${TEMP}/scripted.log 檔案中。sublime-completions 檔案格式的完整參考 此處提供。
Scripted 提供了一些 Sublime 中不具備的額外功能。
您可以在內容輔助建議中包含要展開的變數。例如
內容輔助看起來會像這樣
按下回車鍵將生成此內容
當前支援的變數有
${year} 當前年份${file} 編輯器中當前檔案的完整路徑${dir} 當前檔案的目錄名${projectDir} 當前 Scripted 專案的目錄${selection} 編輯器中當前選定的文字${lineStart} 當前行的開頭空白符${indent} 預設為 '\t' 且 可配置${lineStart} 和 ${indent} 變數無需顯式使用。補全中的每個 '\n' 都將被替換為 ${lineStart},每個 '\t' 都將被替換為 ${indent}。您可以在編輯器中使用它,像這樣
按下回車或點選,模板即被應用
請注意,格式化已正確應用,使用現有空白符縮排程式碼。
Scripted-completions 的早期形式在 0.3 版本中可用,但要使用此部落格文章中描述的所有功能,您應該從 GitHub 上的 Scripted 儲存庫 的 master 分支工作。
在撰寫本文時,Scripted 為 HTML 和 JavaScript 提供了補全功能,我們計劃為更多語言提供建議。當然,您可以新增自己的。如果您想成為一個優秀的開源公民,請考慮為您建立的任何新補全檔案提交拉取請求。