Sublime text 3,将 + 和 - 从 increase decrease font_size 重新分配为 fold unfold
Sublime text 3, reasign the + and - away from increase decrease font_size to fold unfold
我想分配以下键绑定(您在用户键映射中设置)
{ "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" }
但是按键仍然缩放文本,我在这里做错了什么?
也许我可以将它们从默认键盘映射中删除,但那是不可编辑的。
TL;DR 对你的问题的回答是,你在这里遇到问题的原因是你尝试 运行 的命令的默认绑定比你上面提到的更多(由于 Sublime 中的一些怪异之处,我认为我之前没有 运行 ),所以你覆盖了一些但不是所有的默认绑定。
为了更详细的解释,我们可以注意到,如果您从命令面板使用 View Package File
,则可以打开 Default (Linux).sublime-keymap
、Default (Windows).sublime-keymap
和 Default (OSX).sublime-keymap
;其中之一(根据您的问题,您似乎在 Windows 上)是当您使用 Preferences > Key Bindings
时出现在键绑定左侧窗格中的文件,另外两个用于Sublime text 支持的其他平台。
如果我们搜索默认绑定而不是您要重新定义的键,而是搜索绑定到这些键的命令,我们会得出以下结果:
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 绑定到
plus
、minus
和 equals
- 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++
绑定到该命令。但是,这通常只会触发具有不在数字小键盘上(如果有)的专用 +
键的键盘。
这是因为在美式键布局(Sublime 内部一直使用的布局)中,+
键是 =
键的移位状态;因此你必须按 Shift 才能输入它,但 Sublime 似乎把它当作键 ctrl+shift+=
;也就是说,它看到键及其所有修饰符,而不是带有 ctrl
修饰符的键的移位状态。
我想分配以下键绑定(您在用户键映射中设置)
{ "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" }
但是按键仍然缩放文本,我在这里做错了什么? 也许我可以将它们从默认键盘映射中删除,但那是不可编辑的。
TL;DR 对你的问题的回答是,你在这里遇到问题的原因是你尝试 运行 的命令的默认绑定比你上面提到的更多(由于 Sublime 中的一些怪异之处,我认为我之前没有 运行 ),所以你覆盖了一些但不是所有的默认绑定。
为了更详细的解释,我们可以注意到,如果您从命令面板使用 View Package File
,则可以打开 Default (Linux).sublime-keymap
、Default (Windows).sublime-keymap
和 Default (OSX).sublime-keymap
;其中之一(根据您的问题,您似乎在 Windows 上)是当您使用 Preferences > Key Bindings
时出现在键绑定左侧窗格中的文件,另外两个用于Sublime text 支持的其他平台。
如果我们搜索默认绑定而不是您要重新定义的键,而是搜索绑定到这些键的命令,我们会得出以下结果:
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 绑定到
plus
、minus
和equals
- 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++
绑定到该命令。但是,这通常只会触发具有不在数字小键盘上(如果有)的专用 +
键的键盘。
这是因为在美式键布局(Sublime 内部一直使用的布局)中,+
键是 =
键的移位状态;因此你必须按 Shift 才能输入它,但 Sublime 似乎把它当作键 ctrl+shift+=
;也就是说,它看到键及其所有修饰符,而不是带有 ctrl
修饰符的键的移位状态。