Klawisze

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.

Kombinacje, sekwencje i przypisania klawiszy

"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.

Schematy

"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ślnego - nie jest pełnym zestawem przypisań. "Zapożycza" on przypisania ze schematu domyślnego 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ślnego. 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ślnego 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ślnego, gdy nie są zgodne.

Konteksty

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.

Platforma i ustawienia narodowe

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.

Dostosowywanie przypisań klawiszy

Dostosowując przypisania klawiszy przy dużej liczbie sekwencji klawiszy, schematów i kontekstów, obejmujących wiele kombinacji 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 Ogólne > Klawisze.

Strona preferencji Klawisze z aktywną konfiguracją Emacs i wybraną komendą Zamknij

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ślnym 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ślnego, 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.

Dynamiczny charakter przypisań klawiszy

Przypisania klawiszy są udostępniane przez wtyczki, a w środowisku Eclipse wtyczki 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 instalowana nowa wtyczka, w której sekwencja Ctrl+Alt+W jest przypisana do określonej komendy. W środowisku Eclipse zachowane zostanie przypisanie do komendy Wytnij zdefiniowane przez użytkownika.

Rozwiązywanie konfliktów

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 jednej wtyczce sekwencja Ctrl+B byłaby przypisana do komendy Buduj, w drugiej wtyczce - do komendy Pogrub tekst. Jak w środowisku Eclipse można odpowiednio rozwiązać ten konflikt?

Chociaż dzięki tym mechanizmom liczba konfliktów jest znacznie ograniczona, wciąż mogą one się zdarzać. Dwie wtyczki 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 pewna wtyczka przypisała sekwencję Ctrl+F4 w kontekście W oknach w schemacie eomyślnym 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ślnego. W schemacie domyślnym kombinacja Ctrl+X jest przypisana do komendy Wytnij. I chociaż 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 razie nie byłoby możliwe ukończenie wielu przypisań klawiszy zdefiniowanych w konfiguracji Emacs.

Pojęcia pokrewne
Ułatwienia dostępu w środowisku Eclipse
Zmienianie przypisań klawiszy
System pomocy elektronicznej

Informacje pokrewne
Czcionki i kolory w środowisku Eclipse