W środowisku Eclipse można w dużym stopniu dostosowywać działanie klawiatury. Poszczególnym kombinacjom i sekwencjom klawiszy są przypisane funkcje wywoływania określonych komend.
"Kombinacja klawiszy" to naciśnięcie klawisza przy opcjonalnym naciśnięciu i przytrzymaniu co najmniej jednego z następujących klawiszy modyfikujących: Ctrl
, Alt
(Option
w przypadku komputerów Macintosh), Shift
lub Command
(tylko w przypadku komputerów Macintosh). Na przykład naciśnięcie i przytrzymanie klawisza Ctrl
z naciśnięciem klawisza A
daje kombinację klawiszy Ctrl+A
. Naciśnięcie samego klawisza modyfikującego nie stanowi jeszcze kombinacji klawiszy.
"Sekwencja klawiszy" to co najmniej jedna kombinacja klawiszy. Tradycyjnie w edytorze Emacs komendy są wywoływane przy użyciu sekwencji dwóch lub trzech kombinacji
klawiszy. Na przykład w edytorze Emacs do komendy Close All
(Zamknij wszystko) jest przypisana sekwencja klawiszy Ctrl+X Ctrl+C
.
Aby wprowadzić tę sekwencję, najpierw należy nacisnąć kombinację klawiszy Ctrl+X
, a następnie kombinację klawiszy Ctrl+C
.
Wprawdzie platforma Eclipse obsługuje sekwencje klawiszy o dowolnej liczbie kombinacji, zaleca się jednak, aby sekwencje te składały się z maksymalnie czterech kombinacji.
"Przypisanie klawisza" to przypisanie określonej sekwencji klawiszy do komendy.
"Schemat" to zestaw przypisań. W środowisku Eclipse są dostępne dwa schematy:
Schemat domyślny obejmuje ogólny zestaw przypisań, często znanych użytkownikom
jako tradycyjne sekwencje klawiszy. Na przykład sekwencja Ctrl+A
jest przypisana do komendy Wybierz wszystko
,
a sekwencja Ctrl+S
- do komendy Zapisz
.
Schemat Emacs obejmuje zestaw przypisań klawiszy znanych użytkownikom edytora Emacs.
Na przykład sekwencja Ctrl+X H
jest przypisana do komendy Wybierz wszystko
,
a sekwencja Ctrl+X S
- do komendy Zapisz
.
Warto wiedzieć, dlaczego schemat Emacs "rozszerza schemat domyślny". Schemat Emacs - w odróżnieniu
od schematu Domyślny - nie jest pełnym zestawem przypisań. "Zapożycza" on przypisania ze schematu Domyślny
wszędzie tam, gdzie jest to możliwe, a definiuje przypisania specyficzne dla edytora Emacs tylko w przypadku,
gdy są inne niż przypisania schematu Domyślny. Ogólnie mówiąc, tylko dobrze znane komendy, takie jak Wybierz wszystko
, Zapisz
, mają przypisane sekwencje klawiszy specyficzne dla edytora Emacs.
Użytkownik decyduje, z którego schematu jest najwygodniej korzystać, zmieniając ustawienie Schemat na stronie preferencji Klawisze. Po wybraniu schematu Domyślny przypisania klawiszy ze schematu Emacs są ignorowane. Natomiast po wybraniu schematu Emacs przypisania sekwencji klawiszy specyficzne dla edytora Emacs mają pierwszeństwo przed przypisaniami schematu Domyślny, gdy nie są zgodne.
Przypisania klawiszy różnią się w zależności od bieżącego kontekstu środowiska Eclipse.
Czasami zestaw przypisań sekwencji klawiszy może zależeć od używanego edytora - na przykład jeśli częścią aktywną jest edytor plików Java, bardziej odpowiedni dla niego może być inny zestaw niż ten używany w edytorze plików HTML. W tym przykładzie w kontekście edycji pliku w języku Java sekwencja Ctrl+B
jest zwykle przypisana do komendy Buduj
, a w kontekście edycji pliku w języku HTML sekwencja Ctrl+B
jest przypisana do komendy Pogrub tekst
. Kontekst jest zwykle określany przez aktywną część, ale może się zmieniać także w zależności od aktywnego okna lub okna dialogowego. Jeśli aktywna część nie wybierze określonego kontekstu, środowisko robocze aktywuje kontekst W oknach.
W środowisku Eclipse jest dostępnych dziewięć różnych kontekstów. Są one następujące:
Podobnie jak w przypadku konfiguracji, konteksty mogą rozszerzać inne konteksty. Na przykład kontekst Edycja kodu źródłowego Java zapożycza przypisania klawiszy z kontekstu Edytowanie tekstu, który z kolei zapożycza przypisania klawiszy z kontekstu W oknach.
Uwaga: nie zaleca się zmiany przypisania klawisza do kontekstu, który go rozszerza. Na przykład nie zaleca się przenoszenia przypisania klawiszy z kontekstu Edytowanie testu do kontekstu W oknach dialogowych i oknach. Może to przynieść nieoczekiwane rezultaty.
Niektóre przypisania klawiszy mogą działać w oknach dialogowych. Przypisania te znajdują się w kontekście W oknach dialogowych i oknach. Przypisaniem takim jest na przykład przypisanie klawisza do komendy Wytnij. Przypisań tych nie można zmieniać. Może się zdarzyć, że do komendy tej będzie w oknach dialogowych przypisana sekwencja Ctrl+X, ale w oknach - sekwencja Ctrl+W.
Przypisania klawiszy mogą różnić się także w zależności od platformy i ustawień narodowych. Na platformie Macintosh do komendy Zapisz
jest przypisana sekwencja Command+S
, a nie standardowa sekwencja Ctrl+S
. W przypadku chińskich ustawień narodowych (zh) do komendy Asystent treści
jest przypisana sekwencja Alt+/
, a nie standardowa sekwencja Ctrl+Spacja
.
Platforma i ustawienia narodowe są określane przy uruchamianiu środowiska Eclipse i pozostają takie same przez cały czas istnienia danej instancji Eclipse.
Przy wielu sekwencjach klawiszy, schematach i kontekstach, obejmujących tak wiele kombinacji klawiszy, dostosowując przypisania klawiszy, trzeba pamiętać o wielu rzeczach. Aby zadanie to było łatwiejsze, wszelkie czynności związane z dostosowywaniem klawiszy są wykonywane na stronie preferencji Klawisze.
Aby otworzyć stronę preferencji Klawisze, należy wybrać opcję Okna > Preferencje > Ogólne > Klawisze.
W tym przykładzie jako schemat wybraliśmy schemat Emacs, a z listy komend wybraliśmy komendę Zamknij
. Wyświetlane są informacje o tej komendzie, w tym jej bieżące przypisania klawiszy.
Jak widać, komenda Zamknij
ma przypisane trzy sekwencje klawiszy: Ctrl+F4
i Ctrl+W
w schemacie Domyślny oraz Ctrl+X K
w schemacie
Emacs. Są one przypisane w kontekście W oknach. Jeśli użytkownik ustawi schemat Domyślny,
komenda Zamknij
będzie miała przypisane sekwencje Ctrl+F4
i Ctrl+W
,
ale nie sekwencję Ctrl+X K
. Jeśli jednak użytkownik ustawi schemat Emacs,
do komendy Zamknij
będzie przypisana sekwencja Ctrl+X K
. Ponieważ schemat Emacs
"zapożycza" przypisania klawiszy ze schematu Domyślny, do komendy Zamknij
będą przypisane
również sekwencje Ctrl+F4
i Ctrl+W
, o ile nie zostaną w schemacie Emacs przypisane
do zupełnie innej komendy. W naszym przykładzie do komendy Wytnij
jest w schemacie Emacs przypisana sekwencja Ctrl+W.
Poniżej listy sekwencji klawiszy przypisanych do komendy Zamknij
znajduje się miejsce dodawania lub usuwania przypisań klawiszy. Domyślnie jest w nim wybrany kontekst W oknach.
Wpisanie sekwencji klawiszy Ctrl+W
aktywuje przycisk Dodaj. Poniżej przycisku Dodaj zostanie wyświetlona lista wszystkich komend, do których już przypisano sekwencję Ctrl+W
. Jak widać, obecnie sekwencja Ctrl+W
jest przypisana do komendy Wytnij
w kontekście W oknach dialogowych i oknach. Kliknięcie przycisku Dodaj spowoduje przypisanie sekwencji Ctrl+W
do komendy Zamknij
.
Przypisania klawiszy są udostępniane przez moduły dodatkowe, a w środowisku Eclipse moduły te można dodawać i usuwać. Wraz z nimi są dodawane lub usuwane przypisania klawiszy. Niestandardowe przypisania klawiszy są przechowywane w środowisku Eclipse, dzięki czemu nie ulegają zmianom. Powróćmy na chwilę do przykładu, w którym sekwencja Ctrl+Alt+W
została przypisana do komendy Wytnij
w schemacie Emacs. Załóżmy, że jest instalowany nowy moduł dodatkowy, w którym sekwencja Ctrl+Alt+W
jest przypisana do określonej komendy. W środowisku Eclipse zachowane zostanie przypisanie do komendy Wytnij
zdefiniowane przez użytkownika.
Prostych kombinacji klawiszy, które można przypisać, jest niewiele, a komend - mnóstwo. Jak wspomniano, schematy, konteksty,
platformy i ustawienia narodowe oddzielają przypisania klawiszy w poszczególnych obszarach, dzięki czemu przypisania te
nie wchodzą ze sobą w konflikt. Zastanówmy się, co by się działo w opisanym wyżej przypadku sekwencji Ctrl+B
, gdyby nie istniały konteksty. W jednym module sekwencja Ctrl+B
byłaby przypisana do komendy Buduj
, w drugim module - do komendy Pogrub tekst
. Jak w środowisku Eclipse można odpowiednio rozwiązać ten konflikt?
Choć dzięki tym mechanizmom liczba konfliktów jest znacznie ograniczona, wciąż mogą one się zdarzać. Dwa moduły dodatkowe
mogą niezależnie od siebie przypisać tę samą sekwencję klawiszy do różnych komend w tym samym kontekście, w tym samym schemacie,
na tej samej platformie i przy takich samych ustawieniach narodowych. Załóżmy, że pewien moduł dodatkowy przypisał
sekwencję Ctrl+F4
w kontekście W oknach w schemacie Domyślny do jednej ze swoich
komend. Jest to sprzeczne z przypisaniem sekwencji Ctrl+F4
do komendy Zamknij w tym samym kontekście
i w tym samym schemacie w środowisku Eclipse.
To jest właśnie konflikt. Nie jest dobrym rozwiązaniem ani pozwolenie na wywoływanie obu komend, ani wskazanie tylko jednej z tych komend jako aktywowanej tą kombinacją klawiszy. Jedynym dobrym wyjściem jest zignorowanie obu przypisań klawiszy i zrezygnowanie z używania sekwencji Ctrl+F4
w tym kontekście i w tym schemacie.
Takie konflikty można rozwiązywać przez jawne przypisanie sekwencji klawiszy do jednej z komend.
Inne konflikty powstają w przypadku stosowania sekwencji złożonych z wielu kombinacji klawiszy. Na przykład w schemacie Emacs występuje wiele sekwencji rozpoczynających się od kombinacji klawiszy Ctrl+X
. Sekwencja Ctrl+X K
jest przypisana do komendy Zamknij
. Sekwencja Ctrl+X H
jest przypisana do komendy Wybierz wszystko
.
Jak już wspomniano, schemat Emacs "zapożycza" przypisania klawiszy ze schematu Domyślny. W schemacie domyślnym kombinacja Ctrl+X
jest przypisana do komendy Wytnij
. I choć w schemacie Emacs przypisanie kombinacji Ctrl+X
nie jest jawnie zmienione, to kombinacja Ctrl+X
stanowi część wielu przypisań klawiszy w tym schemacie. Po naciśnięciu kombinacji Ctrl+X
w schemacie Emacs jest się w połowie drogi do wprowadzenia jednej z wielu możliwych przypisanych sekwencji klawiszy. W tym przypadku użycie tej kombinacji nie ma na celu wywołania akcji Wytnij
.
W tego typu konfliktach przypisanie kombinacji Ctrl+X
do komendy Wytnij
będzie ignorowane. W przeciwnym wypadku nie byłoby możliwe ukończenie wielu przypisań klawiszy zdefiniowanych w konfiguracji Emacs.
Ułatwienia dostępu w środowisku Eclipse
Zmienianie przypisań klawiszy
System pomocy elektronicznej