在 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
等等。
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 实例的进行过程中不会有改变。
对于多个击键键序列、配置和上下文,在定制键绑定时要考虑很多事项。为了使工作更易于进行,所有键定制都是在“键”首选项页面上完成的。
选择“键”首选项页面的窗口 > 首选项 > 工作台 > 键。
Close
。将显示有关此命令的信息以及它的当前键绑定。
注意,Close
具有三个指定给它的键序列:Ctrl+F4
和 Ctrl+W
(在缺省值配置中)和 Ctrl+X K
(在 Emacs 配置中)。这两个配置都是在在窗口中上下文中指定的。因此,如果用户将活动配置设置为缺省值,则会将 Ctrl+F4
和 Ctrl+W
(而非 Ctrl+X K
)指定给 Close
。但是,如果用户将活动配置设置为 Emacs,则会将 Ctrl+X K
指定给 Close
。另外,由于 Emacs 配置也从缺省值配置借用键绑定,所以也会将 Ctrl+F4
和 Ctrl+W
指定给 Close
(假定这些键绑定尚未被指定给 Emacs 配置中的其它命令)。在此示例中,“Ctrl+W”被绑定至 Emacs 键配置中的 Cut
。
在指定给 Close
的键序列的列表下面,有一个地方用来添加或除去键绑定。缺省情况下,选择在窗口中上下文。
输入键序列 Ctrl+W
,这样“添加”按钮就变为启用的。另外,已对其指定键序列 Ctrl+W
的所有命令的列表都显示在“添加”按钮下面。我们可以看到 Ctrl+W
当前被指定给在窗口和对话框中上下文中的命令 Cut
。单击“添加”按钮将 Ctrl+W
指定给 Close
。
现在我们看到 Ctrl+W
被添加至指定给 Close
的键序列的列表。请留意“更改”小图形 ,它指示此键绑定更改现有键绑定。新的键绑定确保
Close
的 Ctrl+W
键绑定在
Emacs
键配置中起作用。对 Cut
的绑定仍然存在,但将只在对话框中(即,“在对话框和窗口中”但不是在“在窗口中”时)起作用。我们可以通过选择新的键绑定并单击“除去”按钮来随时除去此更改。将会自动恢复 Ctrl+W
的上一个指定,即指定给 Cut
。
Cut
,可以看到更改的结果。请留意图形
Ctrl+Alt+W
)指定给 Cut
。以上述前一种方式添加它会产生以下结果。请留意“加号”小图形
键绑定是由插件提供的,在 Eclipse 中,可以添加或除去插件。这会导致添加或除去由这些插件所声明的键绑定。Eclipse 以某种方法存储定制键绑定以自动补偿这一点。考虑上面的示例,Ctrl+Alt+W
已在 Emacs 配置中指定给 Cut
。考虑用户安装新的插件,该插件将 Ctrl+Alt+W
指定给特定命令。Eclipse 将保留用户对 Cut
的指定,但是显示带有“更改”小图形而不是“加号”图形的键绑定。
只有有限数量的简单的常用击键可用于指定给众多命令。我们看到的有配置、上下文、平台和语言环境,所有这些分区键序列都指定到相互不冲突的域中。如果上下文不存在,则考虑上面的 Ctrl+B
的情况。一个插件会将 Ctrl+B
指定给 Build
,而另一个插件则会将 Ctrl+B
指定给 Make Bold Text
。Eclipse 将如何正确解决此冲突呢?
虽然通过应用上面的机制大大减少了冲突,但是它们仍然可能发生。两个插件(相互无关)可将同一键序列指定给具有相同上下文、配置、平台和语言环境的不同命令。考虑插件是否已在在窗口中上下文和缺省值配置中将 Ctrl+F4
指定给它的其中一条命令。这与在同一上下文和配置中将 Ctrl+F4
指定给 close(关闭)命令的 Eclipse 直接冲突。
Ctrl+F4
在此上下文和配置中确实不起作用。
这种性质的冲突在“键”首选项页面中显示。请留意红色文本和词语“[冲突]”(conflict):
这些冲突类型可以由用户显式地将键序列指定给其中一条命令来解决。
另一种冲突类型可由多个击键键序列导致。例如,在 Emacs 配置中,有许多多个击键键序列以击键 Ctrl+X
开头。Ctrl+H K
被指定给 Close
。Ctrl+X H
被指定给 Select All
。
如前面所提到的那样,Emacs 配置从标准配置借用键绑定。在标准配置中,Ctrl+X
被指定给 Cut
。虽然 Emacs
配置不显式地重定义 Ctrl+X
,但是作为该配置的许多键绑定的一部分,按 Ctrl+X
则是必需的。在 Emacs 配置中,当按
Ctrl+X
时,您就在输入许多可能的指定键序列中的其中一个。您不会期望此时调用 Cut
操作。
对于此冲突类型,规则是将忽略指定给 Cut
的 Ctrl+X
键序列。否则,就不可能完成 Emacs 配置中的许多键绑定。