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.