在Sublime Text

时间:2016-06-09 20:14:38

标签: sublimetext2 sublimetext3 sublime-text-plugin

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

我想在Sublime Text中做这个(或类似的东西)。我非常希望有一种方法可以获得Sublime(或Sublime的插件)来管理重载本身,所以我可以将两个东西绑定到同一个键(或者两个不同的包可以将不同的命令绑定到同一个键)并且让一切正常。

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

在Sublime Text 3(不确定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键绑定时会发生什么,首先是Sublime消息对话框显示"命令2"然后当我点击" ok"在对话框中,视图切换到Sublime中打开的下一个视图(选项卡)。

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