如何在Sublime中设置更改设置值的键绑定?

时间:2015-03-17 01:24:12

标签: sublimetext3

我想要绑定" alt + f11"绑定到切换" draw_centered",将文本居中,如无分散模式。我不知道如何让它工作。

到目前为止,我的关键词是:

//if draw_centered == true, set to false
{ "keys": ["alt+f11"], "command": "set_setting", "args":
    {
        "setting": "draw_centered",
        "value": "true",
    },

    "context":
    [
        { "key": "setting.draw_centered", "operator": "equal", "operand": false}
    ]
},

//if draw_centered == false, set to true
{ "keys": ["alt+f11"], "command": "set_setting", "args":
    {
        "setting": "draw_centered",
        "value": "false",
    },

    "context":
    [
        { "key": "setting.draw_centered", "operator": "equal", "operand": true}
    ]
}

我无法找到一个自动切换的命令" draw_centered",所以我不得不求助于构建某种高级命令。我在理解有关键绑定的文档时遇到了一些麻烦,但我试图遵循"上下文"例。谁能指出我做错了什么?

2 个答案:

答案 0 :(得分:1)

感谢sergioFC关于toggle_setting的提示!我让它使用这段代码:

{ "keys": ["alt+f11"], "command": "toggle_setting", "args":
    {
        "setting": "draw_centered",
    }
}

编辑:我发现了这个错误。使用组合键" alt-f11"现在,无干扰模式并不像它应该的那样。它现在遵循draw_centered状态,当我从正常模式切换到无干扰模式时,我处于该状态。

例如:如果我打开了一个文件,请点击' alt-f11'所以我 left -aligned(即draw_centered = false),当我进入无干扰模式时,窗口将保持左对齐。关于为什么会这样以及如何解决它的任何想法?

答案 1 :(得分:0)

有点晚了,但我花了一段时间才知道如何做类似的事情,这是我试图实现的最接近的问题。

toggle_setting 仅适用于当前视图(您正在处理的文件),它也无法在 show_encoding 等其他选项中使用,因为它们不是&# 39;与视图特别相关,而不是更多地参与面板光谱。

经过几个小时的挖掘后,我发现了一个名为Cycle Settings的旧插件,这个插件适用于Sublime 2,但经过一些调整后,它按预期运行。

(我记得有一个选项可以直接在sublime中创建包,但不记得在哪里..)

转到首选项/浏览包... 并在那里创建一个新文件 "周期设置/ cycle_setting.py" 以及以下代码:

"""

Cycle Setting plugin for Sublime Text 3.
Copyright 2011 Jesse McCarthy <http://jessemccarthy.net/>

Adds a command that can be called from a key binding to toggle or
cycle through values for a setting.

The Software may be used under the MIT (aka X11) license or Simplified
BSD (aka FreeBSD) license.  See LICENSE

"""

import sublime, sublime_plugin

class CycleSettingCommand(sublime_plugin.TextCommand):

    def run(self, edit, setting, options):

        """Cycle $setting to next of $options"""

        index = len(options)

        if not index :

            return


        settings = sublime.load_settings('Preferences.sublime-settings')

        value = settings.get(setting)


        if value in options :

            index = options.index(value)


        index += 1


        if index >= len(options) :

            index = 0


        value = options[index]


        settings.set(setting, value)

        sublime.save_settings('Preferences.sublime-settings')

        self.view.set_status(

            'cycle_setting',

            "Setting '{setting}' cycled to value '{value}'".format(**locals())

        )

现在,让我们使用我们的新命令进行绑定

转到首选项/键绑定

[
    {
        "keys": ["f5"],
        "command": "cycle_setting",
        "args": {
            "setting": "draw_centered",
            "options": [true, false]
        }
    },
    {
        "keys": ["shift+f5"],
        "command": "cycle_setting",
        "args": {
            "setting": "default_line_ending",
            "options": ["system", "windows", "unix"]
        }
    }
]

我们的命令正在循环通过选项数组并将周期中的当前数据保存到 User / Preferences.sublime-settings

我希望这可以帮助其他人,我实际上花了一些时间试图找到如何通过许多外部插件命令来实现这一点,并且按照这个速度我很快就会用完关键组合,问候!