sublime text有很多内置的快捷键, 比如ctrl+n是新建一个标签,ctrl-f是页内搜索等等.

但是有些时候,这些快捷键的设置和我们的使用习惯格格不入.比如,sublime text有个toggle sidebar的快捷键ctrl+k,ctrl+b,用于显示/隐藏侧边栏.当开两栏编辑的时候,我想隐藏侧边栏,需要先按一次ctrl+k,再按一次ctrl+b,有没有办法让我们自定义快捷键呢?

答案当然是有.

简单自定义设置

点开Preferences->Key Bindings Default可以看到系统内置了大量快捷键设定,我们可以按照指定的格式,在Preferences->Key Bindings User里面自定义我们的快捷键,格式类似这样:

[
    { "keys": ["ctrl+shift+n"], "command": "new_window" },
    { "keys": ["f5"],
        "caption": "SublimeREPL: Python - RUN current file",
        "command": "run_existing_window_command",
        "args":
        {
            "id": "repl_python_run",
            "file": "config/Python/Main.sublime-menu"
        }
    },
]

在这个json文件内,每个数组里的对象对应一个快捷键设置. *keys*即为快捷键,*command*为对应的指令,举刚才的例子,如果要快速切换侧边栏状态,可以在数组内添加

{ "keys": ["alt+`"], "command": "toggle_side_bar" },

自定义组合操作

一个快捷键只能执行一个命令显然功能有限,如果希望通过一次击键完成多个操作的话,我们还需进一步设置.

比如,按下ctrl+up编辑区域分为两栏,并且侧边栏隐藏.

这里包含了两个命令,set_layouttoggle_side_bar.第一个命令还有几个参数.这样的设定sublime text默认是不支持的,然而它提供了自定义插件的功能.用nilium编写的插件可以轻松地实现组合操作.

首先在这里run_multiple.py文件内容拷贝下来,点击Tools->New Plugin,将内容粘帖进去,保存为run_multiple.py(或者直接下载文件放到C:\Users\用户名\AppData\Roaming\Sublime Text 3\Packages\User下)

再在Preferences->Key Bindings User中添加

{ "keys": ["ctrl+down"], 
    "command": "run_multiple",
    "args":
    {
        "commands":[
            {
                "command": "toggle_side_bar",
                "args": null,
                "context": "window"
            },
            {
                "command": "set_layout",
                "args":
                {
                    "cols": [0.0, 1.0],
                    "rows": [0.0, 1.0],
                    "cells": [[0, 0, 1, 1]]
                },
                "context": "window"
            },
        ],
    }
},

这样在按下ctrl+down时,编辑器分为一栏,并且切换sidebar显示.

需要提醒的是,最底层的三个参数 command,args,context缺一不可. 其实也不尽然,可以去阅读run_multiple.py源码了解这三个参数的作用 如果你配置保存发现按了之后没反应,请再次查看自己添加的配置拼写和结构是否正确

等等,这个设置好像木有什么用处啊???

别急,继续添加下列配置

{ "keys": ["ctrl+up"], 
    "command": "run_multiple",
    "args":
    {
        "commands":[
            {
                "command": "toggle_side_bar",
                "args": null,
                "context": "window"
            },
            {
                "command": "set_layout",
                "args":
                {
                    "cols": [0.0, 0.5, 1.0],
                    "rows": [0.0, 1.0],
                    "cells": [[0, 0, 1, 1], [1, 0, 2, 1]]
                },
                "context": "window"
            },
            {
                "command": "focus_group",
                "args": { "group": 0 },
                "context": "window"
            },
            {
                "command": "move_to_group",
                "args": { "group": 1 },
                "context": "window"
            },
            {
                "command": "focus_group",
                "args": { "group": 1 },
                "context": "window"
            },
        ],
    }
},
{ "keys": ["ctrl+left"], 
    "command": "move_to_group",
    "args": { "group": 0 },
    "context": "window"
},
{ "keys": ["ctrl+right"], 
    "command": "move_to_group",
    "args": { "group": 1 },
    "context": "window"
},

这样就可以快速进行单栏/双栏的切换.

其他配置类似