我要分配以下键绑定(您在用户键映射中设置的键绑定)
{ "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" }
但是按键仍会放大文本,我在这里做错了什么? 也许我可以将它们从默认键盘映射中撕出来,但是那是不可编辑的。
答案 0 :(得分:1)
对您的问题的TL; DR答案是,您在此处遇到问题的原因是,您尝试运行的命令的默认绑定比上面提到的要多(由于我认为我以前从未遇到过这种崇高的想法),因此您将覆盖部分但不是全部的默认绑定。
有关详细说明,我们可以注意到,如果您从命令选项板使用View Package File
,则可以打开Default (Linux).sublime-keymap
,Default (Windows).sublime-keymap
和Default (OSX).sublime-keymap
;其中之一(根据您的问题,您似乎会在Windows上使用)是使用Preferences > Key Bindings
时出现在键绑定左侧窗格中的文件,另外两个是支持的其他平台通过Sublime文字。
如果我们在默认绑定中搜索的不是您要重新定义的键,而是搜索绑定到这些键的命令,那么我们会得出以下结论:
{ "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" },
{ "keys": ["ctrl++"], "command": "increase_font_size" },
{ "keys": ["ctrl+="], "command": "increase_font_size" },
{ "keys": ["ctrl+-"], "command": "decrease_font_size" },
{ "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 。
不过,还需要注意其他几件事:
+
,-
和=
plus
,minus
和equals
+
,-
,=
和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
修饰符的键的移位状态。