ctrl+shift+p filters: :st2 :st3 :win :osx :linux
浏览

生命期

spywhere ST3

Sublime Text 3的一个插件,用于Sublime Text的内部控制台

详细信息

安装

  • 总计 88K
  • Win 48K
  • Mac 19K
  • Linux 21K
8月6日 8月5日 8月4日 8月3日 8月2日 8月1日 7月31日 7月30日 7月29日 7月28日 7月27日 7月26日 7月25日 7月24日 7月23日 7月22日 7月21日 7月20日 7月19日 7月18日 7月17日 7月16日 7月15日 7月14日 7月13日 7月12日 7月11日 7月10日 7月9日 7月8日 7月7日 7月6日 7月5日 7月4日 7月3日 7月2日 7月1日 6月30日 6月29日 6月28日 6月27日 6月26日 6月25日 6月24日 6月23日 6月22日
Windows 0 8 2 1 5 6 1 5 3 3 6 1 2 5 2 2 5 2 2 3 6 2 2 3 4 4 4 5 6 6 3 4 3 6 8 7 4 3 1 2 2 2 3 2 3 2
Mac 2 1 0 1 1 0 0 1 3 1 0 1 2 1 0 0 0 2 2 1 0 2 1 0 1 1 0 1 2 1 0 2 0 2 4 0 1 0 0 2 2 1 1 1 0 0
Linux 1 1 1 0 2 0 2 0 1 1 0 2 0 2 3 1 2 0 2 2 2 1 0 1 2 0 1 0 3 4 2 2 0 1 1 3 0 1 0 3 1 2 2 2 0 0

README

源代码
raw.​githubusercontent.​com

生命期

Sublime Text 3的一个插件,用于Sublime Text的内部控制台

分支 Gitter Release
release Issues
master (develop) License

Plugin in Action

什么是生命期

生命期是一个插件,允许Sublime Text作为终端使用。这包括从/to Sublime Text的缓冲区的输入和输出。虽然生命期可以运行许多命令,但它**并不保证**可以用于所有命令。

命令是基于语言的。当前版本支持以下语言...

  • C
    • 编译和运行
  • C++
    • 编译和运行
  • Lua
    • 运行
  • Python
    • 以Python 2运行(python命令)
    • 以Python 3运行(python3命令)
  • Rust(感谢@divinites
    • 运行
  • Ruby
    • 运行
  • Swift(仅限OS X)
    • 运行

这样就结束了?不,生命期允许您添加自己的命令在Sublime Text内部使用。请参阅下面的部分以获取更多信息。

如何使用它?

只需按Ctrl+Key+R,菜单就会出现,让您选择要运行的命令。

如果您要向命令传递参数(具体取决于每个命令如何使用参数),请按Ctrl+Key+Shift+R代替。这将让您首先选择命令,然后要求您输入参数。

Key在Windows和Linux上是Alt,在Mac上是Cmd

注意!此键绑定与SFTP冲突。您可能需要自己覆盖它。

设置

生命期使用一个非常复杂的设置系统,您可以在其中控制设置如何影响整个Sublime Text或您想要控制的每个项目。

如您可能已经知道,您可以通过在用户设置文件中设置所需的设置来覆盖默认设置(可以通过首选项 > 包设置 > 生命期 > 设置 - 用户访问)。

但是,如果您想覆盖特定项目的设置,您可以在.sublime-project文件中添加terminality字典。在这个字典下,它就像一个用户的设置文件,但适用于该项目。

总结一下,Terminality首先会查找项目设置文件中的任何设置,然后是用户设置文件,最后是默认的包设置。

Terminality如何帮助我的当前工作流程?

好问题!您可能认为Terminality只是一个插件,显示您已经知道的命令列表。当然,这确实是它的核心功能,但Terminality并不止于此。以下是一些Terminality可以为您做的事情……

  • 在项目中运行测试
  • 独立构建和运行项目,不影响其他项目
  • 根据您的项目或当前文件动态运行Sublime Text的命令
  • 一键部署项目
  • 还有更多……

我如何创建自己的命令并将其与Terminality一起使用?

您可以通过仅使用设置中的execution_units密钥来覆盖命令,从而创建用于Terminality的自己的命令。

或者,如果想要创建和分享一些自己的Terminality命令,请使用集合(请参阅下面的集合部分)。

在v0.3.7或之前版本中,您必须在additional_execution_units中设置。
在v0.3.8或更高版本中,additional_execution_units已弃用,并在v0.4.0中将被删除。

// Settings file
{
    // ... Your other settings ...
    "execution_units": {
        // ... See Language Scopes section belows ...
    },
    // ... Your other settings ...
}

语言作用域

Terminality使用Sublime Text的语法语言作用域,您可以在按Ctrl+Alt+Shift+P(Windows和Linux)和Ctrl+Shift+P(OSX)时在状态栏中找到它。

语言作用域部分是一个字典,其中包含为指定语言作用域可用的命令。

语言作用域的键是一个简单的指定作用域名称。如果您想使命令对所有语言都可用,只需简单地使用*作为语言作用域。

您不能覆盖默认的语言作用域。然而,您可以通过设置值为非字典类型(如0)来删除该语言作用域的默认命令。

"<Language Scope>": {
    // ... See Commands section belows ...
}

命令

命令部分是一个字典,包含有关如何运行命令的信息。

命令的键是一个简单的想要用作命令引用的命令名称(如果没有指定name密钥,这将用作命令名称)。

您可以通过使用要覆盖的命令的确切命令引用名称来覆盖命令(包括默认的)。您还可以通过设置值为非字典类型(如0)来删除命令。

每个键是可选的(下面在限制/规则部分有例外),其含义如下……

  • name [宏字符串] 命令的名称(显示在菜单中)。
  • description [宏字符串] 命令的描述(在菜单中作为子标题显示)。
  • order [字符串] 用于对菜单进行排序的字符串。
  • location [宏字符串] 运行命令的位置路径。
  • required [列表] 必须在运行命令之前设置的宏名称列表(如果没有设置任何宏,则命令不会运行)。
  • arguments [字符串] 询问参数输入时显示的文本。
  • command [宏字符串] 定义要运行的宏字符串。
  • window_command [宏字符串] 定义要运行的Sublime Text的窗口命令(包括您已安装的任何插件)。
  • view_command [宏字符串] 用来定义Sublime Text中将要执行的可视化命令(仅在该视图内运行的命令)的宏字符串。
  • args [字典] 将传递给window_commandview_command的字典。字典值中的每个宏都将递归解析。
  • platforms [列表] 支持的平台列表。格式为<os>-<arch><os><arch>osarch来自Sublime Text的sublime.platform()sublime.arch()命令)。
  • no_echo [布尔值] 指定输入是否会回显(false)或不会(true)。
  • read_only [布尔值] 指定执行的视图是否可以接收用户的输入(false)或不能(true)。
  • close_on_exit [布尔值] 指定当命令结束时是否关闭该视图(true)或不会(false)。
  • macros [字典] 包含自定义宏定义的字典。请参阅下面的“自定义宏”部分。
"<Command Reference>": {
    "name": "<Command Reference>",
    "description": "<Command Name> command",
    "order": "<Command Name>"
    "location": "$working",
    "required": [],
    "arguments": "Arguments",
    // You can use only one of "command", "window_command" or "view_command"
    "command": "<No default value>",
    "window_command": "<No default value>",
    "view_command": "<No default value>",
    // "args" will only use with "window_command" and "view_command"
    "args": {},
    "platforms": [<No default value>],
    "no_echo": false,
    "read_only": false,
    "close_on_exit": false,
    "macros": {}
}
限制/规则
  • 除了required内的宏名之外,每个宏名都应该有$前缀。
  • 每个操作必须只包含commandwindow_commandview_command中的一个(其他可以省略)
  • locationno_echoread_onlyclose_on_exit仅适用于command
  • args仅适用于window_commandview_command

请参阅Terminality的用户设置文件中的示例(以及Terminality的.sublime-project文件本身的示例!)。

预定义宏

  • file:当前正在工作文件的路径
    file_relativefile的相对路径
  • file_namefile的名称
  • working:这将使用working_project,如果未找到,则使用project,如果仍未找到,则使用parent
    working_relativeworking的相对路径
  • working_nameworking的名称
  • working_project:包含当前工作文件的项目文件夹
    working_project_relativeworking_project的相对路径
  • working_project_nameworking_project的名称
  • project:第一个项目文件夹
    project_relativeproject的相对路径
  • project_nameproject的名称
  • parent:包含当前工作文件的父文件夹
    parent_relativeparent的相对路径
  • parent_nameparent的名称
  • packages_path:Sublime Text的包文件夹路径
  • raw_selection:最后选择的原始文本
  • selection:最后选择的文本(去除了换行符等)
  • arguments:通过参数输入传递的文本
  • sep:路径分隔符(/\,取决于您的操作系统)
  • $$符号

自定义宏

您可以通过将每个宏添加到您的执行单位的macros部分中来创建自定义宏,以便与自定义命令一起使用。每个宏是一个键值对,其中键指示宏名(a-zA-Z0-9_,不能有前缀$),值是一个以下值的任意组合列表...

  • "文本和/或 $宏" 如果前一个值未找到,这将是一个解析后的字符串(不包含自递归)
  • ["开始:结束"] 这将从开始到结束提取前一个值(如果有)的子字符串
  • ["正则表达式模式", <可选捕获组>] 这将从匹配中返回指定的组(如果没有指定,则返回默认匹配)
  • ["文本和/或 $宏", "开始:结束"] 如果前一个值未找到,这将从开始到结束提取指定的字符串/宏的子字符串
  • ["字符串和/或 $宏", "正则表达式模式", 《可选捕获组》]如果未找到前一个值,则将从指定的字符串/宏匹配中返回指定的分组(如果未指定,则返回默认匹配)。

子字符串与Python中的子字符串功能相同。您可以像您喜欢的那样省略startend

宏按顺序工作,如果当前宏未找到,则将查看下一个宏。

示例

"CustomMacro": [
    "$file_name", // Get the file name from predefined macro
    [":-4"], // Remove the last 4 characters (if value is found)
    ["$file", "\\w+"], // Get the result from parsing "$file" with RegEx if previous value is not found
    "" // If nothing can be used, use empty string
]

集合

从v0.3.8版本开始实现

集合是一个包含Terminality命令的包,可以通过将其放置在用户目录中来安装。

集合文件的结构非常简单,是一个具有.terminality-collections扩展名的JSON文件。文件中包含以下格式…

{
    "execution_units": {
        // ... See Language Scopes section aboves ...
    }
}

请注意,集合不是一个设置文件(尽管它包含相同的键名)。任何其他键将完全忽略。

贡献者