2. Eclipse Platform
3.1 工作台(Workbench)
3.1.7 按键(Keys)
在 Eclipse 中,可以广泛自订键盘的功能。Eclipse 中指定了许多按键作用和按键顺序来呼叫特定的 指令。
按键作用(Key Strokes)、按键顺序(Key Sequences)和按键连结(Key Bindings)
「按键作用」是指按下键盘上的某个按键,同时选择性按住一或多个下列修正键: Ctrl、Alt(在 Macintosh 上为 Option)、Shift 或 Command(只有 Macintosh 才有。)比方说,先按住 Ctrl,然后按 A 的时候,就会产生按键作用 Ctrl+A。单独按下修正键时,并不会组成按键作用。
「按键顺序」是指一或多个按键作用。传统上,emacs 会指定两个或三个按键作用的按键顺序给特定 的指令。例如,在 emacs 中,指派给全部关闭的正常按键顺序是 Ctrl+X Ctrl+C。如果要输入这个按键 顺序,必须按下按键作用 Ctrl+X,然后按下按键作用 Ctrl+C。虽然 Eclipse 支持任意长度的按键顺序,
但键盘快捷方式的长度最好不超出四键。
「按键连结」是将按键顺序指派给指令。
配置(Configurations)
「配置」是指一组按键连结。Eclipse 包含两种配置:
默认值
Emacs(延伸预设)
环境定义(Contexts)
按键连结可能会因为 Eclipse 的现行环境定义而有所不同。
平台和语言环境(Platform and Locale)
在不同的平台和语言环境下,按键连结也会不同。在 Macintosh 平台上,Command+S 是指派给储存, 而不是常用的 Ctrl+S。在中文语言环境中 (zh),Alt+/ 是指派给内容辅助,而不是常用的 Ctrl+空格键。 当 Eclipse 启动时,会决定现行的平台和语言环境,而且在 Eclipse 实例过程中并不会改变。
自订按键连结(Customizing Key Bindings)
在自订按键连结时,如果有多键的按键顺序、配置和环境定义,则会有许多事项须记住。为了简化,所有 的按键自订都是在「按键」喜好设定页面中完成。
选取「Window」→「Preferences」→「Workbench」→「Keys」来进入「按键」喜好设定页面。
图3.13
在这个范例中,我们已经选择 Emacs 作为作用中的配置,而且已经从指令清单中选择关闭指令。这 个指令的信息以及指令的现行按键连结都会显示出来。
请注意,关闭已经指派了三个按键顺序:预设配置中的 Ctrl+F4 和 Ctrl+W 以及 Emacs 配置中的 Ctrl+X K。两者的指派环境定义都是在窗口中。因此,如果使用者将作用配置设为预设,就会将 Ctrl+F4 和 Ctrl+W 指派给关闭,而 Ctrl+X K 则不会。不过,如果使用者将作用中的配置设定为 Emacs, Ctrl+X K 就会指派给关闭。同时,由于 Emacs 配置也会从预设配置借用按键连结,因此,Ctrl+F4 和 Ctrl+W 也 会指派给关闭,不过,这些按键连结必须尚未指派给 Emacs 配置中的另一个指令。在这个范例中,"Ctrl+W"
连结于 Emacs 按键配置中的剪下。
以下是指派给关闭的按键顺序清单,还有一个地方可以新增或移除按键连结。依预设,它选取的环境 定义是在窗口中。
输入按键顺序 Ctrl+W,就会启用「新增」按钮。同时,指定按键顺序 Ctrl+W 的所有指令的清单会 显示在「新增」按钮下面。这时可以看到 Ctrl+W 目前是在在窗口和对话框中的环境定义中指派给剪下指 令。按一下「新增」指令来将 Ctrl+W 指派给关闭。
现在可以看到 Ctrl+W 已经新增至指派给关闭的按键顺序清单中。请注意,小型的「变更」图形 表示这个按键连结会变更现有的按键连结。请确定关闭的 Ctrl+W 按键连结在 Emacs 按键配置中能够运
作。剪下的连结仍存在,但只能在对话框中运作(也就是说,我们是「在对话框和窗口中」,而不是「在 窗口中」)。我们可以随时移除这个变更,方法是选取新的按键连结,然后按一下「移除」按钮。这时就会 自动还原将 Ctrl+W 指派给剪下的指派。
图3.14
选取剪下指令,就可以看到变更的结果。请注意,这个图 表示按键连结已经移除。我们可以随时 还原这个按键连结,方法是在此处选取它,然后按一下「还原」按钮,这样就能有效移除在前一个步骤中 新增的按键连结。
图3.15
假设在 Emacs 配置中已经选择指定另一个按键给剪下(例如,Ctrl+Alt+W),以前一个方法来新增这 个按键时,会产生下列结果。请注意,小型的「加号」图形 表示使用者已新增按键连结,而这个按键 连结之前并未指定:
图3.16
按键连结的动态本质(The Dynamic Nature of Key Bindings)
按键连结是由外挂程序提供,而在 Eclipse 中,可以新增或移除外挂程序。这样就能新增或移除由这 些外挂程序所宣告的按键连结。Eclipse 在储存自订按键连结时,可以自动补偿这个问题。比方说,在上 面的范例中,在 Emacs 配置中,Ctrl+Alt+W 是指派给剪下。假设使用者安装一个新的外挂程序,将 Ctrl+Alt+W 指定至特定指令。Eclipse 会将使用者的指派保留给剪下,但是会显示有小型「变更」图型的 按键连结,而不会显示含有「加号」图型的按键连结。
冲突解决(Conflict Resolution)
只有少数简单、常用的按键作用可以指派给多个指令。许多配置、环境定义、平台和语言环境的所有 分割键顺序在指派到网域中时,并没有彼此冲突。如果环境定义不存在,请考虑上述 Ctrl+B 的情况。有 一个外挂程序将 Ctrl+B 指派给建置,则其它的外挂程序会将 Ctrl+B 指派给将文字变为粗体字。那么 Eclipse 将如何正确地解决这个冲突呢?
虽然可藉由上述的机制来大量减少冲突,但冲突仍然可能发生。两个相对独立的外挂程序可以将相同 按键顺序指派给含相同环境定义、配置、平台和语言环境的不同指令。请考虑如果外挂程序于在窗口中环 境定义中指派了 Ctrl+F4,且将预设配置指派给它的其中一个指令。这会与将 Ctrl+F4 指派给相同环境定 义和配置中之关闭指令的 Eclipse 造成直接冲突。
这就是冲突。同时呼叫两个指令是不正确的,也不能只选择其中一个指令来接收按键作用。唯一能做 的,就是忽略这两个按键连结,使 Ctrl+F4 在这个环境定义和配置中实际上没有用。
「按键」喜好设定页面显示这个本质的冲突。请注意红色的文字和 "[冲突]" 一字:
如果要解决这类冲突,使用者可以将按键顺序明确指派给其中一个指令。
另一类的冲突可能是因为按键顺序有多重按键作用。例如,在 Emacs 配置中,有许多多重按键作用 的按键顺序是以 Ctrl+X 的按键作用作为开头。Ctrl+H K 是指派给关闭。Ctrl+X H 是指派给全选。
如同之前的说明,Emacs 配置会从标准配置借用按键连结。在标准配置中,Ctrl+X 是指派给剪下。 虽然 Emacs 配置没有明确重新定义 Ctrl+X,但是它的许多按键连结都需要按下 Ctrl+X。在 Emacs 配置 中,按下 Ctrl+X 时,就等于要进入其中一个可能已经指定的按键顺序。但我们并不希望在这时候呼叫剪 下动作。
对于这类冲突,其规则是忽略已指派给剪下的 Ctrl+X。否则,就无法完成 Emacs 配置中的许多按键 连结。