Na każdej z moich klawiatur obok lewego Alt znajduje się przycisk oznaczony urokliwą flagą Windows. W konfiguracjach linuksowych przydatny do czegokolwiek bywa rzadko, a szkoda - położenie wręcz wymarzone do wykorzystania w kombinacjach klawiszowych.
Poniżej prosty patent na definiowanie skrótów typu Win-x
czy Win-r
pod
Emacsem. A przy okazji o paru pokrewnych (Emacsowych) drobiazgach.
Skróty win-r
, win-c
, ...
Przykład (do umieszczenia w ~/.emacs
czy podobnym pliku):
; win-r
(global-set-key [8388722] 'remember)
; win-c
(global-set-key [8388707] 'remember-region)
; win-x
(global-set-key [8388728] 'execute-extended-command)
Pierwsze dwa wiążą win-r
i win-c
z poleceniami remember mode (o
nim za chwilę), trzeci sprawia, że win-x
jest synonimem alt-x
(często się w tej kombinacji mylę).
Skąd biorę te magiczne numerki? Od samego Emacsa. Po kolei:
- uruchamiam interaktywnie
M-x global-set-key
- na pytanie
Set key globally:
po prostu naciskam kombinację, o którą mi chodzi (np.win-k
) - na pytanie
Set key s-k to command:
wpisuję jakąś emacsową komendę (najlepiej tę, o którą naprawdę mi chodzi, ale może być cokolwiek, na przykład ...global-set-key
), - powtarzam dla każdej potrzebnej kombinacji klawiszy,
- naciskam
C-h v
(tj.describe-variable
) i wpisujęglobal-map
.
Emacs wyświetla tabelę mapowań wszystkich klawiszy, a w niej min. potrzebne kody (najłatwiej je zlokalizować szukając po nazwie podanych funkcji), np. u mnie jest tam teraz taki fragment:
(8388715 . global-set-key)
(8388728 . execute-extended-command)
(f11 . next-error)
(8388707 . remember-region)
(8388722 . remember)
Na tej podstawie konstruuję fragment ~/.emacs
podobny do przedstawionego
wyżej.
Nie wiem, czy jest to najprostsza możliwa metoda, ale działa.
Remember mode
Wywołane wyżej remember mode to fajny tryb do robienia notatek
ad-hoc, zapisywanych w ustalonym pliku. Przy powyższych skrótach: win-r
otworzy małe okienko, w którym można napisać cokolwiek, po czym zamknąć
je C-c C-c
, a win-c
po prostu zapisze zaznaczony region niczego nie
otwierając. W obu wypadkach zadany tekst zostanie dopisany do pliku
notatek.
Lokalizację pliku notatek ustawiamy konfigurując zmienną
remember-data-file
(np. M-x customize-variable
, podajemy
remember-data-file
, wpisujemy pożądaną ścieżkę i zapisujemy
ustawienie). Właśnie testuję ~/Dropbox/emacs.notes
.
W zalecanym przez autorów trybie pracy plik notatek należy regularnie przeglądać (np. raz dziennie - jeśli notujemy sporo), przenosząc zapiski we właściwsze miejsce (np. do jakiejś listy zadań, bazy informacji, kolekcji snippetów kodu itd). Celem remember mode nie jest budowanie baz wiedzy tylko - po prostu - obsługa szybkiego zapisywania nie zaburzającego właściwej pracy.
Bardziej zaawansowane techniki wiążą się z łączeniem tych notatek z agendami
org-mode
, ale przećwiczenie tego typu zastosowań na razie mam jeszcze przed sobą.
Moje ulubione zastosowanie remember mode to robienie notatek
w czasie czytania grup dyskusyjnych w Gnus. Zaznaczam wartościowy fragment
czyjejś wypowiedzi, naciskam win-c
i mam go zanotowany do przyszłego
wykorzystania. Niejeden kawałek artykułów o nginksie
wywodzi się z takich zapisków powstałych przy czytaniu
comp.web.nginx.
Standardowe kopiuj i wklej
Skoro już mowa o klawiszach windowsowych, wspomnę o
(cua-mode 1)
W tym trybie C-c
, C-x
i C-v
odpowiednio kopiują, wycinają i
wklejają - i to uwzględniając systemowy schowek. Działa też zaznaczanie
tekstu przez trzymanie Shift w trakcie wędrowania kursorem.
O ile przemapowanie C-v
jest nieszkodliwe, o tyle C-c
, a zwłaszcza
C-x
pojawiają się niesłychanie często w różnych standardowych
skrótach, z C-x C-f
i C-x C-s
na czele. cua-mode
radzi sobie z
tym dość sprytnie:
- jeśli nie ma żadnego zaznaczonego regionu, klawisze działają po emacsowemu,
- gdy zaznaczenie mamy, reakcja zależy od tego, jak szybko po naciśnięciu
C-x
(czyC-c
) pojawił się następny klawisz, Emacs przez krótką chwilę czeka na kontynuację i dopiero gdy jej nie ma, wycina (lub kopiuje).
Czas oczekiwania jest konfigurowany jako cua-prefix-override-inhibit-delay
(można customizować). Domyślne 0.2 sekundy dla mnie jest ciut za szybkie,
przy 0.3 pracuje mi się dość dobrze.
Z popularnych kombinacji najtrudniej mi zdążyć z
C-x r k
(wycięcie prostokąta). To na tej operacji (dość wymagającej dla lewej dłoni) testowałem sobie właściwy czas oczekiwania.
Ukłon w stronę Microsoftu
W ramach dygresji: nie lubię systemów operacyjnych Microsoftu, ale jeden z produktów tej firmy ogromnie cenię. Chodzi o Microsoft Natural Keyboard. Łamanek używam od ponad dziesięciu lat, przy czym oryginał Microsoftu był chyba najlepszą z zamęczonych przeze mnie klawiatur.