升华文本3,重新分配+和-远离增加,减小font_size使其展开

时间:2019-07-04 08:41:49

标签: sublimetext3

我要分配以下键绑定(您在用户键映射中设置的键绑定)

{ "keys": ["ctrl+-"], "command": "fold" },
{ "keys": ["ctrl++"], "command": "unfold" }

但是默认值似乎仍然存在

{ "keys": ["ctrl++"], "command": "increase_font_size" },
{ "keys": ["ctrl+="], "command": "increase_font_size" },
{ "keys": ["ctrl+keypad_plus"], "command": "increase_font_size" },
{ "keys": ["ctrl+-"], "command": "decrease_font_size" },
{ "keys": ["ctrl+keypad_minus"], "command": "decrease_font_size" },

我想删除所有缩放效果,所以我尝试了

{ "keys": ["ctrl++"], "command": "null" },
{ "keys": ["ctrl+="], "command": "null" },
{ "keys": ["ctrl+keypad_plus"], "command": "null" },
{ "keys": ["ctrl+-"], "command": "null" },
{ "keys": ["ctrl+keypad_minus"], "command": "null" }

但是按键仍会放大文本,我在这里做错了什么? 也许我可以将它们从默认键盘映射中撕出来,但是那是不可编辑的。

1 个答案:

答案 0 :(得分:1)

对您的问题的TL; DR答案是,您在此处遇到问题的原因是,您尝试运行的命令的默认绑定比上面提到的要多(由于我认为我以前从未遇到过这种崇高的想法),因此您将覆盖部分但不是全部的默认绑定。

有关详细说明,我们可以注意到,如果您从命令选项板使用View Package File,则可以打开Default (Linux).sublime-keymapDefault (Windows).sublime-keymapDefault (OSX).sublime-keymap;其中之一(根据您的问题,您似乎会在Windows上使用)是使用Preferences > Key Bindings时出现在键绑定左侧窗格中的文件,另外两个是支持的其他平台通过Sublime文字。

如果我们在默认绑定中搜索的不是您要重新定义的键,而是搜索绑定到这些键的命令,那么我们会得出以下结论:

Windows

    { "keys": ["ctrl++"], "command": "increase_font_size" },
    { "keys": ["ctrl+="], "command": "increase_font_size" },
    { "keys": ["ctrl+keypad_plus"], "command": "increase_font_size" },
    { "keys": ["ctrl+-"], "command": "decrease_font_size" },
    { "keys": ["ctrl+keypad_minus"], "command": "decrease_font_size" },

    { "keys": ["ctrl+equals"], "command": "increase_font_size" },
    { "keys": ["ctrl+shift+equals"], "command": "decrease_font_size" },
    { "keys": ["ctrl+shift+keypad_plus"], "command": "decrease_font_size" },

Linux

    { "keys": ["ctrl++"], "command": "increase_font_size" },
    { "keys": ["ctrl+="], "command": "increase_font_size" },
    { "keys": ["ctrl+-"], "command": "decrease_font_size" },

OSX

    { "keys": ["super+equals"], "command": "increase_font_size" },
    { "keys": ["super+plus"], "command": "increase_font_size" },
    { "keys": ["super+minus"], "command": "decrease_font_size" },

这里看到的绑定的一个区别是Windows和Linux使用 Ctrl 进行这些绑定,而MacOS使用 Super

不过,还需要注意其他几件事:

  • Linux将命令绑定到+-=
  • MacOS绑定到plusminusequals
  • Windows绑定到+-=equals(以及keypad等价物)

让您大吃一惊的是,Windows还使用equals键绑定了命令,如上所示,根据您的问题,您尚未覆盖它。

=equals(以及其他对)之间存在内部等价关系,这导致Sublime选择equals而非=;您尚未覆盖使用equals的命令的版本,因此它仍然适用。

要真正覆盖默认值,您需要为键重新分配所有可能的绑定,如下所示:

{ "keys": ["ctrl+-"], "command": "fold" },
{ "keys": ["ctrl+="], "command": "unfold" },
{ "keys": ["ctrl++"], "command": "unfold" },
{ "keys": ["ctrl+equals"], "command": "unfold" },

{ "keys": ["ctrl+keypad_plus"], "command": "null" },
{ "keys": ["ctrl+keypad_minus"], "command": "null" },

{ "keys": ["ctrl+shift+equals"], "command": "null" },
{ "keys": ["ctrl+shift+keypad_plus"], "command": "null" },

为了完整起见,这将ctrl+=ctrl+equals绑定到同一命令,尽管无论如何总是只有ctrl+equals会触发;很好地提醒您,有多个键可以执行此操作。

我们还将ctrl++绑定到该命令。但是,这通常只会触发具有专用+键且不在数字小键盘(如果有)上的键盘。

这是因为在US键布局(Sublime始终在内部使用)上,+键是=键的转换状态。因此,您必须按 Shift 进行键入,但是Sublime似乎将其作为键ctrl+shift+=;也就是说,它看到了键及其所有修饰符,而不是带有ctrl修饰符的键的移位状态。