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
Изменение привязок клавиш
Help