Ovládanie okien
Emacs v grafickom prostredí umožňuje aj interakciu s myšou a grafické menu, čo umožňuje začiatočníkom poradiť si z mnohými vecami samostatne. Efektivita ale klesá, preto si teraz predstavíme základné skratky pre ovládanie okien.
C-x 2
rozdelí aktívne okno horizontálne na dve okná, C-x 3
vertikálne. Takto si môžeme v jednom frame (grafické okno Emacsu)
zobraziť naraz viac bufferov. C-x o
prepína medzi oknami.
C-x 1
odstráni všetky okná okrem aktívneho a C-x 0
odstráni
aktívne okno.
Ďalšia užitočná funkcia je C-x 4 0
(kill-buffer-and-window
), ktoré
zatvorí buffer a odstráni okno. Podobná je funkcia, ktorá iba zatvorí
buffer v aktívnom okne kill-this-buffer
(skratku si nastavíme
neskôr).
Skratky na zmenu veľkosti nepovažujem za veľmi šťastne vybrané, aj keď
to nie sú najpoužívanejšie funkcie, preto teraz prejdeme na vlastnú
úpravu prostredia konfiguračným súborom .emacs
.
.emacs
a Emacs Lisp
To najťažšie už je za nami – množstvo informácií, ktoré sú viac či menej nepostrádateľné pre pokročilého užívateľa. Teraz sa budem venovať nastaveniam, rozšíriteľnosti a neskôr aj konkrétne nejakým zaujímavým módom.
Vlastné skratky
O užívateľoch Emacsu sa hovorí, že sú blázni do zvyšovania efektivity, čo je určite dôsledkom obrovskej prispôsobiteľnosti. Spomínal som vyššie, že si zadefinujeme nejaké skratky, takže najskôr ovládanie:
(define-key global-map (kbd "C->") 'enlarge-window) (define-key global-map (kbd "C-<") 'shrink-window) (define-key global-map (kbd "C-M->") 'enlarge-window-horizontally) (define-key global-map (kbd "C-M-<") 'shrink-window-horizontally)
Každý riadok je samostatný výraz, volanie funkcie define-key
s
argumentami. Druhý argument je ďalšie volanie, je to makro, ktoré
prijíma reťazec opisujúci skratku (význam rozdielu medzi funkciami a
makrami je nad rámec tohoto článku). Posledný argument je názov
funkcie so znakom '
na začiatku, toto je vyžadované jazykom ak
chceme funkcii predať názov funkcie.
Ak tieto príkazy uložíme do súboru .emacs
v domovskom adresári, pri
každom spustení Emacsu sa do v globálnej klávesovej mape priradia
funkcie na ovládanie veľkosti aktívneho okna. Skratky sa zapisujú
rovnako ako je zvykom v celom tomto seriáli, niektoré špeciálne
klávesy majú inú notáciu.
Ako ďalšie by sme si mohli nastaviť prepínanie okna a funkcie na zatvorenie aktívneho bufferu:
(define-key global-map (kbd "C-<tab>") 'other-window) (define-key global-map (kbd "<f11>") 'kill-buffer-and-window) (define-key global-map (kbd "<f12>") 'kill-this-buffer)
Pokiaľ máme záujem experimentovať, tak nemusíme stále vypínať a zapínať editor, môžeme:
- načítať súbor s príkazmi –
load-file
(zvyknú mať príponu.el
), - vykonať označené príkazy –
eval-region
, - vykonávať celý buffer –
eval-buffer
, - zadať výraz funkcii
eval-expression
, - v bufferi s módom
lisp-interaction-mode
vykonávať výrazy skratkouC-M-x
(pri štarte sa takýto buffer otvára a má meno*scratch*
),
Aj popri editácii .emacs
je spomenutá skratka z
lisp-interaction-mode
funkčná a môžeme si tak overiť, či sme
nenapísali nejaké nastavenie chybne.
Ako posledné si ešte zadefinujeme dve užitočné skratky a zároveň si tým ukážeme ako je možné automaticky použiť interaktívne funkcie:
(define-key global-map (kbd "M-<up>") '(lambda () (interactive) (scroll-down 1))) (define-key global-map (kbd "M-<down>") '(lambda () (interactive) (scroll-up 1)))
Niekedy je text, ktorý by sme potrebovali vidieť, o riadok vyššie
alebo nižšie, a preto si definujeme skratky pre posun zobrazovaného
textu o riadok nahor alebo nadol. Volané funkcie sú interaktívne,
preto sme to volanie obalili anonymnou funkciou bez argumentov
(lambda
) a pred samotným volaním ešte voláme funkciu interactive
bez argumentov.
Kozmetické úpravy
V prvom rade aby okno Emacsu zapadlo do grafického prostredia je vhodné použiť GNU Emacs verzie 22, konkrétne verziu pre Gtk+ grafický toolkit.
Teraz uvediem okomentované nastavenie, ktoré sa aplikuje (a má význam) iba pre grafickú verziu Emacsu:
(when window-system ;; scrollovanie myšou (mwheel-install) ;; nastavenie pre X clipboard (set-selection-coding-system 'compound-text-with-extensions) ;; pre Gtk+ verziu nemá zmysel, pre X verziu áno (set-face-font 'menu "-*-helvetica-medium-r-normal-*-*-*-*-*-*-*-*-*") ;; osobne preferujem nasledujúce nastavenie v súbore .Xdefaults, pretože ;; sa aplikuje ihneď pri štarte ;;(set-face-font 'default "*-lucidatypewriter-medium-*-*-*-12-*-*-*-*-*-*-*") ;; vypnutie tool-bar-mode, ponechanie menu, výška a šírka bufferu, ;; farebná schéma "biela na čiernom" (nastavenia pre všetky okná) (setq default-frame-alist '((tool-bar-lines . 0) (menu-bar-lines . 1) (width . 80) (height . 50) (background-color . "black") (foreground-color . "white"))) ;; farba okrajov (set-face-background 'fringe "grey10") ;; farba kurzoru (set-cursor-color "green"))
Spomínaný font sa dá pomocou .Xdefaults
nastaviť riadkom:
emacs.font: *-lucidatypewriter-medium-*-*-*-12-*-*-*-*-*-*-*
Nastavenie fontu v tomto formáte je možné vytvoriť programom
xfontsel
.
Nakoniec ešte zrušíme otravné pomocné výpisy pri štarte:
(setq inhibit-startup-message t) ;; reťazec "login" je nutné nahradiť prihlasovacím menom. (setq inhibit-startup-echo-area-message "login")
Nabudúce sa pozrieme na ďalšie užitočné nastavenia a rozšírenia.
Pre pridávanie komentárov sa musíte prihlásiť.