【问题标题】:multiple "commands" in a single Sublime Text 2 user keymap shortcut单个 Sublime Text 2 用户键盘映射快捷方式中的多个“命令”
【发布时间】:2012-11-03 12:27:21
【问题描述】:

有没有办法让多个“命令”与一个快捷方式关联?

我有这两个快捷方式。第一个快捷方式使左侧的窗口大于右侧的窗口(在 2 列视图中),下一个快捷方式将焦点放在第一个窗口上。快速编码时,我倾向于忘记一个或另一个快捷方式。

{
    "keys": ["super+alt+left"],
    "command": "set_layout",
    "args":
    {
        "cols": [0.0, 0.66, 1.0],
        "rows": [0.0, 1.0],
        "cells": [[0, 0, 1, 1], [1, 0, 2, 1]]
    }
},
{ "keys": ["ctrl+alt+left"], "command": "focus_group", "args": { "group": 0 } }

这个问题让我听起来像我很懒,但我想认为它是有效率的。

请问有什么意见或建议吗?

【问题讨论】:

  • 我发现这个问题很有趣,想要执行完全相同的命令序列。

标签: sublimetext3 sublimetext2 sublimetext keymapping sublimetext4


【解决方案1】:

Sublime Text 4(build 4104,2021 年 5 月 3 日)开始,您可以使用内置的 chain 命令。

在旧版本(ST2 或 ST3)中,您需要安装 Chain of Command 插件 (GitHub)。

两者具有相同的语法,允许您编写执行多个操作的键绑定等,例如:

{ "keys": ["ctrl+d"],
  "context": [
    { "key": "panel_visible", "operator": "equal", "operand": true }
  ],
  "command": "chain",
  "args": {
    "commands": [
      ["hide_panel", {"cancel": true}],
      ["find_under_expand"]
    ]
  }
},

它重新定义了 Ctrl+D,以便在“查找”面板打开时将其关闭,然后执行其正常操作(快速添加下一步)。

您可以执行任意数量的子命令。每个都是一个带有命令名称(例如"hide_panel")的数组,后跟可选的参数(例如{"cancel": true})。非官方/不完整的documentation of available commands and their arguments 可能会有所帮助。

【讨论】:

  • 这个插件值得更多的星星
  • 很棒的插件,这应该标记为答案
  • 注意: 对于刚刚学习 sublime 的任何人,您还可以将多个命令附加到您自己编写的插件中的自定义类,例如您可以编写的 class MyCustomCommand(sublime_plugin.TextCommand) Python。见your-first-plugin
【解决方案2】:

您可以录制一个宏(使用工具菜单),然后保存它并设置一个键盘快捷键来调用它

{"keys": ["super+alt+l"], "command": "run_macro_file", "args": {"file": "res://Packages/User/Example.sublime-macro"}}

http://docs.sublimetext.info/en/latest/extensibility/macros.html

当然,这并不完全符合您的要求,但可能会为其他有类似问题的人提供相同的结果。

【讨论】:

    【解决方案3】:

    Sublime Text 2 forum 上有一篇帖子,其中包含通用“运行多个命令”插件的代码。它将允许您将多个命令绑定到任何键绑定,就像您通常将它们绑定到一个键一样:

      {
        "keys": ["super+alt+left"],
        "command": "run_multiple_commands",
        "args": {
          "commands": [
            { "command": "set_layout", "args": { "cols": [0.0, 0.66, 1.0], "rows": [0.0, 1.0], "cells": [[0, 0, 1, 1], [1, 0, 2, 1]] } },
            { "command": "focus_group", "args": { "group": 0 } }
          ]
        }
      }
    

    请注意,这是未经测试的,您必须安装帖子中提供的插件才能使其正常工作。

    或者,您可以按照this answer 中的说明为一组特定命令创建插件。

    【讨论】:

    • 对于这些非常命令,"context": "window" 也必须添加。例如:{ "command": "focus_group", "args": { "group": 0 }, "context": "window" }.
    猜你喜欢
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-27
    • 2013-03-01
    • 2012-07-20
    • 1970-01-01
    • 2013-01-08
    相关资源
    最近更新 更多