领先一步
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 提供了补全功能,我们计划为更多语言提供建议。当然,您可以添加自己的。如果您想成为一个优秀的开源公民,请考虑为您创建的任何新补全文件提交拉取请求。