在 Eclipse 中,通过使用
常规 > 键首选项,可以对键盘的功能进行广泛定制。在 Eclipse 内,通过指定击键和键序列来调用特定命令。
“击键”就是按键盘上的某一键,同时可选择按住以下一个或多个组合键:Ctrl、Alt(在 Macintosh 上是 Option)、Shift 或 Command(仅在 Macintosh 上)。例如,按住 Ctrl 而后按下 A 会组成击键 Ctrl+A。按下这些组合键本身并不构成击键。
“键序列”就是一个或多个击键。传统上,Emacs 将两个或三个击键键序列指定给特定的命令。例如,在 emacs 中指定给 Close All 的正常键序列为 Ctrl+X Ctrl+C。要输入此键序列,可按击键 Ctrl+X,随后按击键 Ctrl+C。虽然 Eclipse 支持任意长度的键序列,但建议键盘快捷键不要超过四个击键。
“键绑定”是将键序列指定给命令。
“方案”是一组绑定。Eclipse 提供了两个方案:
缺省方案包含一组通用绑定,在许多情况下,它们被认为是熟知命令的传统键序列。例如,Ctrl+A 被指定为 Select All,而 Ctrl+S 被指定为 Save。
Emacs 方案包含 Emacs 用户熟悉的一组键绑定。例如,Ctrl+X H 被指定给 Select All,而 Ctrl+X S 被指定给 Save。
了解 Emacs 方案为什么是“扩展缺省”很重要。Emacs 方案不是一组完整的绑定,它与缺省方案不同。但是,它尽可能地借用缺省方案的内容,只是在定义显式 Emacs 样式绑定方面不同于缺省配置。通常,只有熟知的命令(例如,Select All 和 Save 等等)才具有与它们相关联的特定 Emacs 键序列。
通过在键首选项页上更改“方案”设置,选择您最喜欢的方案。如果选择缺省方案,那么将忽略所有 Emacs 绑定。如果选择 Emacs 方案,那么显式的 Emacs 样式键序列指定内容将优先于缺省方案中任何与它们有冲突的指定内容。
根据 Eclipse 当前上下文的不同,键绑定会有所不同。
活动的部件有时可能是一个 Java 文件编辑器(例如,在以下情况下就是如此:另外一组键序列指定可能会比活动部件是 html 文件编辑器的情况更合适)。作为特定示例,通常将 Ctrl+B 指定给诸如 Java 文件编辑之类的上下文中的 Build,而将
Ctrl+B 指定给诸如 HTML 文件编辑之类的上下文中的 Make Text Bold。此上下文通常通过活动部件来确定,但它也可能会受活动窗口或对话框影响。如果活动部件不选择特定上下文,那么工作台会将活动上下文设置为在窗口中。
Eclipse 包含许多不同的上下文。下面是一些示例:
与配置很相似,上下文可以扩展其他上下文。例如,编辑 Java 源代码上下文从编辑文本上下文借用键绑定,而后者又从在窗口中上下文借用键绑定。
注意:建议不要将键绑定提升为它扩展的上下文。例如,建议不要将编辑文本键绑定移至在对话框和窗口中上下文。这可能会产生意外的结果。
一些键绑定在多个对话框中工作是有可能的。这些键绑定被指定给在对话框和窗口中上下文。此类键绑定的一个示例是“cut”的键绑定。可以更改这些键绑定。例如,可以使用 Ctrl+X 作为对话框中 cut 的键绑定,但使用 trl+W 作为窗口中 cut 的键绑定。
键绑定也会随平台和语言环境的不同而有所不同。在 Macintosh 平台上,Command+S(而不是通常的 Ctrl+S)被指定给 Save。在“中文”语言环境(zh)中,Alt+/(而不是通常的“Ctrl+空格”)被指定给 Content Assist。
当前平台和语言环境是在 Eclipse 启动时确定的,在 Eclipse 实例的进行过程中不会有改变。
对于多个击键键序列、方案和上下文,在定制键绑定时要考虑很多事项。为了使工作更易于进行,所有键定制都是在
常规 > 键首选项页上完成的。
在本示例中,我们要将 CTRL+5 与 About 命令绑定。缺省情况下,“键”首选项页将显示所有可能的键绑定。您可以查看“帮助”类别中列示的 About 命令。可以通过将焦点切换到“绑定”文本框并按 CTRL+5 来绑定该命令,就象执行该命令一样。

当您按 CTRL+5 时,您已为 About 创建了绑定。最右边一列将显示一个 U 字母,指示这是一个用户绑定。如果与另一个键有冲突,那么此列还将显示一个 C 字母。该绑定将应用于缺省上下文,即“在窗口中”。现在,可以使用“时间”组合框来更改键绑定上下文(例如,将此绑定移至“编辑文本”)。
如果要对 About 添加第二个键绑定,那么可以使用复制命令按钮创建要与另一个键绑定的第二个命令条目。如果要删除绑定,那么可以使用除去绑定按钮或者将焦点切换至“绑定”文本框并按 Backspace 键。
键绑定是由插件提供的,在 Eclipse 中,可以添加或除去插件。这会导致添加或除去由这些插件所声明的键绑定。Eclipse
以某种方法存储定制键绑定以补偿这一点。考虑上面的示例,CTRL+6 已在缺省模式中指定给
About。假定您安装了对特定命令指定了
CTRL+6 的新插件。Eclipse 将保留对 About 的指定。
只有有限数量的简单的常用击键可用于指定给众多命令。我们看到的有模式、上下文、平台和语言环境,所有这些分区键序列都指定到相互不冲突的域中。如果上下文不存在,那么考虑上面的 Ctrl+B 的情况。一个插件会将 Ctrl+B 指定给 Build,而另一个插件则会将 Ctrl+B 指定给 Make Bold Text。Eclipse 将如何正确解决此冲突呢?
虽然通过应用上面的机制大大减少了冲突,但是它们仍然可能发生。两个插件(相互无关)可将同一键序列指定给具有相同上下文、模式、平台和语言环境的不同命令。考虑插件是否已在在窗口中上下文和缺省模式中将 Ctrl+F4 指定给它的其中一条命令。这与在同一上下文和模式中将 Ctrl+F4 指定给 close(关闭)命令的 Eclipse 直接冲突。
这就是一个冲突。同时调用这两条命令是不正确的,只选择这两条命令中的其中一条来接收击键也是不正确的。将弹出“键辅助”对话框,该对话框将显示有冲突的命令并允许用户进行选择。“键辅助”对话框就是显示多个击键绑定的命令选项的对话框。例如,如果已将 2 个命令与 F12 绑定,那么您可能会看到:

如果用户设置了键绑定并且产生了冲突,那么发生冲突的绑定将显示在冲突列表中。这可以用来在发生冲突的键绑定之间浏览,以便可以更改它们。

可以通过显式地将键序列指定给其中一条命令或者对命令除去键序列来解决这些冲突类型。
另一种冲突类型可由多个击键键序列导致。例如,在 Emacs 模式中,有许多多个击键键序列以击键 Ctrl+X 开头。Ctrl+X K 被指定给 Close。Ctrl+X H 被指定给 Select All。
如前面所提到的那样,Emacs 模式从缺省模式借用键绑定。在缺省模式中,Ctrl+X 被指定给 Cut。虽然 Emacs 模式不显式地重定义 Ctrl+X,但是作为该配置的许多键绑定的一部分,按 Ctrl+X 则是必需的。在 Emacs 模式中,当按
Ctrl+X 时,您就在输入许多可能的指定键序列中的其中一个。您不会期望此时调用 Cut 操作。
对于此冲突类型,规则是将忽略指定给 Cut
的 Ctrl+X 键序列。否则,就不可能完成 Emacs 配置中的许多键绑定。