【问题标题】:Overload keybindings in Sublime Text在 Sublime Text 中重载键绑定
【发布时间】:2016-06-09 20:14:38
【问题描述】:

在 TextMate 中,可以有多个命令绑定到同一个按键。当您输入该按键时,TextMate 会在您的光标附近显示一个小菜单,列出不同的命令,并让您通过输入数字来选择一个。

我想在 Sublime Text 中执行此操作(或类似的操作)。如果有办法让 Sublime(或 Sublime 的插件)来管理重载本身,我会非常喜欢,所以我可以将两个东西绑定到同一个键(或者两个不同的包可以将不同的命令绑定到同一个键)并拥有一切正常。

如果我必须手动管理它,例如定义某种菜单,然后让它提供两个命令,那就不太理想了。但如果这是唯一的解决方案,我仍然有兴趣知道如何去做。

【问题讨论】:

    标签: sublimetext2 sublimetext3 sublime-text-plugin


    【解决方案1】:

    虽然可以创建一个在按下某个组合键时弹出操作菜单的插件,但(可能)更好的方法是在自定义键绑定中使用contexts。您可以使用相同的组合键定义多个键绑定定义,但根据上下文执行不同的操作 - 例如,光标是否在某个范围内,或者某个正则表达式是否匹配周围的文本,或者是否某些设置是一个值或另一个值,等等。虽然这确实需要提前进行一定量的设置,但上下文非常强大。

    【讨论】:

      【解决方案2】:

      在 Sublime Text 3(不确定 2)中,您最后输入的任何键绑定 + 命令组合都会被考虑并运行。 同样在“首选项”菜单下,有 2 个键绑定选项 - 默认和用户。 用户文件中的键绑定 + 命令组合将始终覆盖默认文件中的组合。

      为了回答您的问题,我刚刚尝试过,这是可能的。但是,您必须做的是在 Sublime Text 中创建一个插件,在 Key Binding - User 中为其分配一个键绑定,然后在您的插件中您可以运行任何您想要的命令。如果它们是 Sublime Text 预定义的命令,那么您可以将它们包括在下面的代码中。 我在这里重载了“Ctrl + Tab”键绑定。

      #Key Bindings - User file (sublime-text-3/Packages/User/Default (Linux).sublime-keymap )
          [
              { "keys": ["ctrl+tab"], "command": "test_overload_two" }
          ]
      

      我在 (sublime-text-3/Packages/User ) 下创建了一个新文件 此处创建的所有文件都在 ST3 中作为插件加载。确保文件具有 .py 扩展名 (python)

      #Overload.py
      
      import sublime, sublime_plugin
      
      class TestOverloadTwoCommand(sublime_plugin.WindowCommand):
          def run(self):
              sublime.message_dialog("Command 2")
              self.window.run_command("next_view_in_stack")
      

      所以当我按下 Ctrl + Tab 键绑定时会发生什么,首先出现一个带有“命令 2”的 Sublime 消息对话框,然后当我在对话框上单击“确定”时,视图切换到下一个视图(选项卡) 在 Sublime 中打开。

      所以这就是你可以做的。希望这能回答你的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-04
        • 2015-01-04
        相关资源
        最近更新 更多