在ST2中为同一个键绑定分配多个命令

时间:2013-05-09 10:06:36

标签: sublimetext2

我有“Super + Alt + left”设置布局,以便左窗格更宽(66%):

current ST2 layout

我还希望将相同的按键笔划集中在左侧标签上,以便我可以立即开始输入而无需单击或按Ctrl + 0。

这是我尝试过的。我添加了一个新的插件:

import sublime, sublime_plugin

class ExpandAndFocusLeftPane(sublime_plugin.TextCommand):
  def run(self, edit):
    self.view.run_command("focus_group", "args": {"group": 0})
    self.view.run_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]]
      })

我将“Super + Alt + Left”绑定到这个新命令。

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

但它仍然没有做我想要它做的事情。有任何想法吗 ?

1 个答案:

答案 0 :(得分:1)

首先,您必须检查“focus_group”和“set_layout”命令是否按预期工作。 打开控制台(View-> Show Console)并尝试:

view.run_command("focus_group", "args": {"group": 0})

你会得到一个:

  File "<string>", line 1
    view.run_command("focus_group", "args": {"group": 0})
                                          ^
SyntaxError: invalid syntax   

如果您将其更改为

view.run_command("focus_group", {"group": 0}) 

它不起作用。这是因为“focus_group”和“set_layout”是window命令,所以这将起作用:

window.run_command("focus_group", {"group": 0})
window.run_command("set_layout", { "cols": [0.0, 0.66, 1.0], "rows": [0.0, 1.0],  "cells": [[0, 0, 1, 1], [1, 0, 2, 1]] })

因此,您的插件应该展开sublime_plugin.WindowCommand并使用self.window

class ExpandAndFocusLeftPaneCommand(sublime_plugin.WindowCommand):
    def run(self):
        self.window.run_command("focus_group", {"group": 0})
        self.window.run_command("set_layout", {
           "cols": [0.0, 0.66, 1.0],
          "rows": [0.0, 1.0],
          "cells": [[0, 0, 1, 1], [1, 0, 2, 1]]
        })

ExpandAndFocusLeftPane应为ExpandAndFocusLeftPaneCommand