Eclipse предоставляет очень широкие возможности для настройки функций клавиш. В Eclipse применяются комбинации клавиш и их последовательности, связанные с определенными командами.
'Комбинация клавиш' - это нажатие какой-либо клавиши на клавиатуре, возможно, в сочетании с управляющими клавишами: Ctrl
, Alt
(Option
в Macintosh), Shift
или
Command
(только в Macintosh.) Например, нажатие Ctrl
одновременно с A
образует комбинацию клавиш Ctrl+A
. Нажатие управляющих клавиш как таковых не образует комбинацию клавиш.
'Последовательность клавиш' - это одна или несколько комбинаций клавиш. Обычно в Emacs действия связаны с последовательностями из двух или трех
комбинаций клавиш. Например, команда Закрыть все
emacs выполняется последовательностью клавиш Ctrl+X Ctrl+C
.
Для того чтобы ввести эту последовательность клавиш, введите комбинацию клавиш Ctrl+X
и вслед за ней Ctrl+C
.
Хотя длина последовательности клавиш в Eclipse не ограничена, не рекомендуется использовать последовательности клавиш длиной более четырех комбинаций клавиш.
'Привязка клавиш' связывает последовательность клавиш с командой.
Под словом 'схема' понимается набор привязок клавиш. Eclipse включает две схемы:
Схема по умолчанию содержит большинство стандартных привязок клавиш, которые пользователи чаще всего воспринимают как традиционные последовательности клавиш.
Например, клавиши Ctrl+A
связаны с действием Выбрать все
,
Ctrl+S
- Сохранить
.
Схема Emacs содержит набор привязок клавиш, с которыми знакомы пользователи Emacs.
Например, клавиши Ctrl+X H
связаны с действием Выбрать все
,
Ctrl+X S
- Сохранить
.
Почему говорится, что схема Emacs 'расширяет схему по умолчанию'? Схема Emacs не представляет собой
полный набор привязок клавиш, как схема по умолчанию. Вместо этого используются значения конфигурации по умолчанию везде, где это возможно,
и лишь в случае явных отличий от привязок Emacs значения конфигурации по умолчанию
переопределяются. Это делается только для широко употребляемых команд, таких Выбрать все
, Сохранить
и пр.
Пользователь сам решает, в какой конфигурации работать, выбрав на странице параметров клавиш вкладку 'Схема'. Если выбрана схема по умолчанию, то все привязки клавиш Emacs игнорируются. Если выбрана схема Emacs, то все явно заданные последовательности клавиш Emacs имеют преимущество по сравнению со схемой по умолчанию.
Привязки клавиш могут изменяться в зависимости от текущего контекста Eclipse.
Иногда активным компонентом может быть редактор файлов Java, для которого более соответствующим задачам может быть другой набор последовательностей клавиш, чем, например, для редактора файлов HTML.
Например, в контексте редактора файла Java Ctrl+B
логично связать с действием Компоновка
, а в в контексте редактора файла HTML Ctrl+B
больше подойдет для действия Выделить жирным
.
Обычно контекст определяется активным компонентом, но на него может влиять и активное окно.
Если активный компонент не задает никакой конкретный контекст, то рабочая среда задает контекст по умолчанию Обычное окно.
Eclipse различает девять контекстов, а именно:
Как и конфигурации, контексты расширяют другие контексты. Например, контекст Редактор кода Java наследует привязки клавиш контекста Редактор текста, который в свою очередь наследует привязки клавиш контекста Обычное окно.
Примечание: Не рекомендуется распространять схему привязки клавиш на контекст, который она расширяет. Например, не рекомендуется применять схему привязки клавиш Редактор текста в контексте Обычное или диалоговое окно. Это может привести к непредсказуемым последствиям.
Некоторые привязки клавиш будут работать в окнах диалога. Это привязки контекста Обычное или диалоговое окно. Например, такова привязка клавиш для действия "Вырезать". Эту привязку клавиш можно изменить. Например, задать Ctrl+X в окнах диалога, но Ctrl+W - в обычных окнах.
Привязки клавиш зависят также от платформы и локали. В Macintosh для Сохранить
применяется Command+S
, а не Ctrl+S
, как обычно. В китайских локалях (zh) для Помощника по содержимому
применяется Alt+/
, а не Ctrl+Space
.
Конечно, текущая платформа и локаль определяются при запуске Eclipse и не меняются в различных экземплярах Eclipse.
Если учитывать последовательности клавиш из нескольких комбинаций, различные схемы и контексты, то настроить привязки клавиш будет не так просто. Для того чтобы упростить эту задачу, вся настройка осуществляется с помощью страницы Параметры клавиш.
Выберите Окно > Параметры > Общие > Клавиши, чтобы открыть страницу Параметры клавиш.
Рассмотрим в этом примере активную схему Emacs и выберем команду Закрыть
в списке команд. Будет показана информация по этой команде и ее текущие привязки клавиш.
Обратите внимание, что команде Закрыть
сопоставлены три последовательности клавиш: Ctrl+F4
и Ctrl+W
в схеме по умолчанию и Ctrl+X K
в схеме Emacs.
Обе включены в контекст Обычное окно. Поэтому, если пользователь выберет схему по умолчанию в качестве активной, то 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
с действием Закрыть
.
Привязки клавиш обрабатываются модулями, а в Eclipse модули можно и добавлять, и удалять. Тем самым могут быть добавлены или удалены и привязки клавиш, объявленные этими модулями. Eclipse хранит пользовательские привязки клавиш так, чтобы компенсировать последствия этого. В примере выше комбинация Ctrl+Alt+W
была связана с действием Вырезать
в схеме Emacs. Допустим, что пользователь устанавливает новый модуль, в котором комбинация Ctrl+Alt+W
связана с какой-либо командой. Eclipse сохранит заданную пользователем связь комбинации клавиш с командой Вырезать
.
Обычных, коротких комбинаций клавиш - мало, а команд - много.
С учетом схемы, контекста, платформы и локали привязки клавиш разбиваются на группы и не конфликтуют между собой.
Допустим, контексты не существуют. Как быть тогда с Ctrl+B
?
Один модуль связал бы Ctrl+B
с действием
Компоновка
, другой - с
Выделить жирным
. Как Eclipse разрешит этот конфликт?
В действительности конфликты могут иметь место, даже несмотря на то, что вышеперечисленные механизмы резко сокращают их количество.
Например, два независимых модуля могут связать одну и ту же последовательность клавиш с разными действиями, при этом контекст, схема, платформа
и локаль будут одинаковыми. Пусть в модуле последовательность Ctrl+F4
связана с одной из команд в контексте
Обычное окно и схеме по умолчанию.
Это создает конфликт с Eclipse, в котором последовательность Ctrl+F4
связана с командой Закрыть в том же самом контексте и схеме.
Было бы неверным вызывать обе команды, равно как и отдавать предпочтение одной из них. Правильным будет игнорировать эту привязку клавиш, то есть выключить Ctrl+F4
в данном контексте и схеме.
Разрешаются такие конфликты явным связыванием последовательности клавиш с одной из команд.
Другой тип конфликта возникает вследствие последовательностей клавиш, состоящих из нескольких комбинаций. Например, в схеме Emacs многие последовательности клавиш начинаются с комбинации Ctrl+X
. Ctrl+X K
связана с Закрыть
. Ctrl+X H
связана с Выбрать все
.
Как уже упоминалось, схема Emacs заимствует привязки клавиш из схемы по умолчанию. В схеме по умолчанию последовательность Ctrl+X
связана с командой Вырезать
. Хотя схема Emacs не переопределяет Ctrl+X
, нажатие Ctrl+X
требуется для многих ее привязок. В схеме Emacs нажатие Ctrl+X
только начинает последовательность клавиш. Было бы неправильным выполнять действие Вырезать
уже в этот момент.
Для такого типа конфликта комбинация клавиш Ctrl+X
игнорируется, и действие Вырезать
не выполняется. В противном случае работа многих привязок клавиш в конфигурации Emacs была бы невозможна.
Специальные возможности в Eclipse
Изменение привязок клавиш
Электронная справка