Portál AbcLinuxu, 4. června 2024 06:30

Emacs - jak začít

3. 3. 2004 | Jan Fuchs
Články - Emacs - jak začít  

Ať už jste Emacs někdy zahlédli nebo vás to teprve čeká, může se vám hodit přehled těch nejdůležitějších příkazů, které využijete při práci s textem.

Úvod

Emacs není "jen" textový editor. Umožňuje ladit programy, pracovat s poštou, prohlížet WWW, hrát hry, povídat si atd. Představím vám ho, ale pouze z hlediska textového editoru. Má vlastní programovací jazyk Emacs LISP, pomocí kterého je celý napsán. Jeho autor je Richard Stallman (zakladatel FSF). Pracuje v textovém režimu i v prostředí X-Window. Chcete-li v X spustit textovou verzi editoru, zajistíte to následujícím příkazem.

emacs -nw

 

Jako další argument můžete zadat název souboru, který chcete editovat. Editor ukončíte následující kombinací kláves.

Ctrl+x Ctrl+c

Buffery

Do bufferů si Emacs ukládá editované soubory. Obsahuje 3 speciální buffery *scratch*, *Messages*, *Buffer List*, které se automaticky otevřou při spuštění. Následujícím příkazem spustíme Emacs a otevřeme 3 nové buffery pro 3 nové soubory.

emacs prvni druhy treti

Obrazovka editoru se rozdělila na dvě poloviny. V první polovině je buffer posledního souboru s názvem treti a v té druhé speciální buffer *Buffer List*, který obsahuje seznam všech otevřených bufferů. Zkuste přecházet mezi okny s buffery.

Ctrl+x o

Nacházíte se v bufferu treti a chcete mít na obrazovce pouze tento buffer, proto zavřete všechny ostatní okna.

Ctrl+x 1

Nyní se přesuňte do bufferu prvni. Pro doplňování můžete používat TAB, jak jste zvyklí z Bashe. V případě, že existuje několik možností, otevře Emacs další buffer a v něm je zobrazí. Po doplnění se buffer zase sám zavře. Když se vás Emacs ptá, do kterého bufferu se chcete přesunout, zobrazuje na řádku výchozí možnost (tj. předchozí zobrazený buffer), která se vybere, stisknete-li ENTER.

Ctrl+x b prvni

Rozdělte okno na dvě.

Ctrl+x 2

Přepněte se v prvním okně do bufferu druhy a v druhém okně do bufferu treti.

Ctrl+x b druhy
Ctrl+x 4 b treti

Jste v druhém okně, zavřete všechny ostatní (v našem případě pouze jedno). Zavřete buffer treti, druhy.

Ctrl+x 1
Ctrl+x k treti
Ctrl+x k druhy

Soubory a adresáře

Otevřete si libovolný soubor.

Ctrl+x Ctrl+f

Místo souboru si otevřete nějaký adresář.

Ctrl+x Ctrl+d

Nyní můžete pracovat s adresáři a soubory.

Pohyb v textu

Zkuste pro pohyb v textu použít Left, Right, Down, Up, Home, End, PageUp, PageDown. A nyní to zkuste s držením klávesy Ctrl. Dle mého názoru je ale rychlejší používat následující klávesové zkratky. Mají ekvivalentní funkci jako předchozí klávesy a podle toho jsou řazeny za sebou. U prvních šesti zkuste ještě držet Alt místo Ctrl.

Ctrl+b
Ctrl+f
Ctrl+n
Ctrl+p
Ctrl+a
Ctrl+e
Alt+v
Ctrl+v

Místo držení klávesy Alt můžete stisknout a uvolnit Esc.

Základy editace

Otevřete si buffer s nějakým textem. Označte si začátek (konec) regionu.

Ctrl+MEZERA

Posuňte se např. o dva řádky dolů. A pak text vyjměte a nebo ho zkopírujte do schránky.

Ctrl+w
Alt+w

Dle chuti se přesuňte na jiné místo v textu a vložte obsah schránky na pozici kurzoru.

Ctrl+y

Makra

Zkopírujte si do bufferu následující text.

www.abclinuxu.cz
www.root.cz
www.underground.cz
www.qwert.cz
www.penguin.cz
www.seif.cz

Máte za úkol pomocí makra upravit text do následující podoby.

Abclinuxu - http://www.abclinuxu.cz
Root - http://www.root.cz
Underground - http://www.underground.cz
Qwert - http://www.qwert.cz
Penguin - http://www.penguin.cz
Seif - http://www.seif.cz

Jsme na prvním řádku textu a provedeme definici makra.

Ctrl+x (
Ctrl+a
http://
Alt+f
Ctrl+f
Ctrl+MEZERA
Alt+f
Alt+w
Ctrl+a
Ctrl+y
 -
Ctrl+a
Alt+c
Ctrl+n
Ctrl+x )

Nyní spustíme 5x naše makro.

Alt+5 Ctrl+x e

A máme hotovo. Naše první makro se nám zalíbilo a proto si ho pojmenujeme pekne_makro. Na druhém řádku vidíme, jak ho pak můžeme spouštět.

Alt+x name-last-kbd-macro
Alt+x pekne_makro

Uložíme si ho do souboru ~/.emacs. A můžeme ho používat i při dalším spuštění Emacsu.

Ctrl+x f ~/.emacs
Alt+x insert-kbd-macro

Můžete si nadefinovat spuštění makra po stisknutí klávesy F1, přídáním následujícího řádku za definici makra.

(global-set-key (quote [f1]) 'pekne_makro)

~/.emacs

Pro začátek by se vám mohlo hodit něco z níže uvedeného konfiguračního souboru.

(custom-set-variables
'(default-input-method "czech")
'(load-home-init-file t t)
'(case-fold-search t)
'(global-font-lock-mode t nil (font-lock))
'(current-language-environment "Czech"))

(custom-set-faces)

; Nastavení kódování
(if window-system
(setq clipboard-coding-system 'latin-2)
(set-terminal-coding-system 'latin-2))

(set-selection-coding-system 'iso-8859-2)
(setq process-coding-system-alist '((".*" . iso-8859-2)))

; U souborů s příponou tk zapne tcl-mode
(setq auto-mode-alist (cons '("\\.tk$" . tcl-mode) auto-mode-alist))

; Počet mezer při odsazování
(setq c-basic-offset '2)

; Definice hlavního módu
(setq default-major-mode 'text-mode)

; Definice vedlejšího módu
(add-hook 'text-mode-hook 'turn-on-auto-fill)

Závěr

Dle mého názor jsou editory Emacs a Vim jedny z nejlepších a nejmocnějších. Věčné hádky, bitky a války o tom, který z nich je lepší, nemají žádný smysl.

Nedávno jsem začal používat Vim. Proč?

Nedoporučuji používat oba editory zároveň. Dřív jsem používal klávesové zkratky Emacsu ve Vimu a nyní to dělám obráceně. Zvyk je zvyk ;-)

Související články

Mutt - jak začít
Editor VIM prakticky

Odkazy a zdroje

GNU Emacs

Další články z této rubriky

VDR a DVB-T2, část 2.
VDR a DVB-T2, část 1.
Šifrovaný Proxmox VE 6: ZFS, LUKS, systemd_boot a Dropbear
MapTiler – proměňte obrázek v zoomovatelnou mapu
Syncthing

Diskuse k tomuto článku

3.3.2004 10:29 Jakub Chalupnik | skóre: 7
Rozbalit Rozbalit vše Oleee!
Odpovědět | Sbalit | Link | Blokovat | Admin
Emacs jsem nikdy nepouzival, ale jeden cas jsem pouzival uEMACS a pote po dlouhou dobu JED s EMACS-like klavesama, takze jsem EMACS pozitivni. Stahl jsem si okenni verzi a vyzkousim. Tesim se na pokracovani!
3.3.2004 11:18 cronin
Rozbalit Rozbalit vše Ukladanie a nacitavanie diakritiky
Odpovědět | Sbalit | Link | Blokovat | Admin
Ako mam presvedcit svoj xemacs, aby spravne pracoval s diakritikou? Podarilo sa mi dosiahnut, aby ju spravne zobrazoval pri pisani, ale nedokaze ju nacitat zo suboru (namiesto znakov z makcenom zobrazi znaky "prevratene e", "francuzske uvodzovky" a pod.) a nevie spravne ulozit to, co sa v nom da napisat (pred niektorymi znakmi ulozi este nieco, nejaku escape sekvenciu).

Mam nastavene:

LC_ALL=sk_SK.ISO8859-2

LANG=sk_SK.ISO8859-2
Stanislav Brabec avatar 3.3.2004 11:56 Stanislav Brabec | skóre: 45 | Praha
Rozbalit Rozbalit vše Ukladanie a nacitavanie diakritiky
Zkuste LANG=sk_SK.ISO-8859-2. LANG=sk_SK.ISO8859-2 je nekorektní pro X, která pak mohou používat špatná písma.

LC_ALL raději vypusťte. Mohlo by to poškodit funkčnost skriptů, které používají třeba proměnnou LC_COLLATE nebo LC_NUMERIC. Nastavením LC_ALL říkáte - ignoruj jakékoliv speciální nastavení těchto proměnných, a vnuť jim něco jiného.
Stanislav Brabec avatar 3.3.2004 12:28 Stanislav Brabec | skóre: 45 | Praha
Rozbalit Rozbalit vše Ukladanie a nacitavanie diakritiky
Omlouvám se, sk_SK.ISO8859-2 X kupodivu berou. Ale neberou sk_SK.ISO88592, sk_SK.iso8859-2 ani sk_SK.iso-8859-2.

Takže asi hledejte jinde.
3.3.2004 13:48 Roman Vasicek
Rozbalit Rozbalit vše Ukladanie a nacitavanie diakritiky

EMACSu se da rict jake kodovani ma pouzit pro nasledujici zadavany prikaz a tedy i pro otevirani souboru. Otevrit soubor v iso-8859-2 (bez ohledu na to jak by ho oteviral defaultne) pak mohu nasledovne

<CTRL>+x  <ENTER>  c  iso-8859-2<ENTER>
<CTRL>+x  <CTRL>+f  jmeno_souboru<ENTER>
3.3.2004 15:21 cronin
Rozbalit Rozbalit vše Ukladanie a nacitavanie diakritiky
Vyskusal som to, funguje to na spravne zobrazenie mekcenov v otvorenom subore, nefunguje to ale na ukladanie suboru. V tom ukladani je zvlastne to, ze ta diakritika, ktora v subore bola pri otvoreni a nemenila sa, sa ulozi spravne, bez zmeny, avsak diakritika, ktora bola do suboru pripisana, sa ulozi nespravne, s escape sekvenciami.
Stanislav Brabec avatar 3.3.2004 15:51 Stanislav Brabec | skóre: 45 | Praha
Rozbalit Rozbalit vše Ukladanie a nacitavanie diakritiky
Option -> Mule -> Set coding system -> For next command

Jinak jsou to asi proměnné (pro custom-set-variables):

'(current-language-environment "Slovak") '(default-input-method "slovak")
4.3.2004 08:02 cronin
Rozbalit Rozbalit vše Ukladanie a nacitavanie diakritiky
Ani toto problem nevyriesilo. :-(
4.3.2004 08:40 Roman Vasicek
Rozbalit Rozbalit vše Ukladanie a nacitavanie diakritiky

Je mozne, ze tento problem by mohl byt zpusoben tim, ze pri vstupu z klavesnice neni schopen emacs z nejakeho duvodu (bug) zjistit ze zapsany znak odpovida jinemu v patricnem kodovani. Vice by k tomu mohl zajiste rici pan Pavel Janik. Pokud si pamatuji, tak jsem s nim stejny problem pri pouziti UTF-8 kodovani konzultoval loni na OpenWeekendu. Vysledkem bylo doporuceni pouzit CVS verzi emacsu a nikoli z distribuce (v mem pripade SuSE). Vzhledem k tomu, ze ne vsude si mohu instalovat vlastni SW tak jsem to ani nevyzkousel a zustal jsem u editace textu v iso kodovani a prevodu to utf pomoci recode.

Stanislav Brabec avatar 4.3.2004 11:37 Stanislav Brabec | skóre: 45 | Praha
Rozbalit Rozbalit vše Ukladanie a nacitavanie diakritiky
S UTF-8 má Emacs ještě trochu problémy. Nemohu přesně říci kdy, ale za jistých okolností ho neuloží dobře.

Navíc je trochu problém s tím, že Emacs zřejmě považuje á v západním kódování za znak odlišný od á ve východním kódování, zatímco pro UTF-8 je to totéž.
4.3.2004 12:53 cronin
Rozbalit Rozbalit vše Ukladanie a nacitavanie diakritiky
V inych aplikaciach (kwrite, zoinks, opera, jedit, ...) diakritika funguje spravne, problem ma len XEmacs. :-(
3.3.2004 19:52 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše vecne spory
Odpovědět | Sbalit | Link | Blokovat | Admin
plne souhlasim, ze oba dva editory jsou si co do funkci na psani textu shodne.

ale jeden paradox tu je - jednou jsem vedl diskuzi s vyucujicim a hajil jsem ViM, proti Emacsu - a polozil jsem mu zaludnou otazku jestli Emacs umi pracovat tak dobre s regularnima vyrazama jak ViM - dostal jsem odpoved - ze po stisku nekolika ctrl, alt klaves se Emacs prepneme do rezimu, ktery se chova jak Vi - toto ViM opravdu nema, aby mel rezim ve kterem se chova jak Emacs
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
Vašek Lorenc avatar 3.3.2004 20:02 Vašek Lorenc | skóre: 27
Rozbalit Rozbalit vše vecne spory
http://www.vimacs.cx/about.html -- ale osobně jsem to netestoval. Nicméně to vypadá, že už se čeká jenom na emulaci Emacsu v emulátoru VIMka běžícím pod Emacsem... ;)
...včetně majestátného loosa
4.3.2004 08:44 Roman Vasicek
Rozbalit Rozbalit vše vecne spory

V emacsu je problem upravovat vetsi soubory. Potreboval jsem jednou editovat dump mensi databaze (cca 300 MB textu) a emacs ho ani neotevrel, zatimco s vimem jsem se sice pomalu ale jiste dopracoval k pozadovanemu vysledku.

5.3.2004 11:59 Jiri Pejchal
Rozbalit Rozbalit vše vecne spory
V CVS emacsu(21.3.50) je maximalni velikost bufferu 256 MB.
3.3.2004 20:49 pawel
Rozbalit Rozbalit vše pismenka s diakritkou na win
Odpovědět | Sbalit | Link | Blokovat | Admin
Dobry den. V pouzivani emacsu me ZASADNE odradila skutecnost ze po zmacknuti jakekoliv klavesy pismenka s diakritikou to misto toho pismena vypise napr. \232 a ja nenasel behem kratke doby reseni... Jak 100ho ven?
Stanislav Brabec avatar 3.3.2004 22:36 Stanislav Brabec | skóre: 45 | Praha
Rozbalit Rozbalit vše pismenka s diakritkou na win
Viz nastavení výše. Ve starém Emacsu (19) se musela nastavit nějaká proměnná (bylo to popsané v balíčku emacs-czech, když byl ještě potřeba). Více viz czech.el.
9.3.2004 00:18 SiLK
Rozbalit Rozbalit vše Je Emacs dobry na html, xml, C, Python..?
Odpovědět | Sbalit | Link | Blokovat | Admin
Mnohokrate jsem zkousel prejit z Vimu na Emacs, ale pokazde me pokusy zkrachovaly. Zajimalo by mne, jestli Emacs prinasi opravdu nejakou usporu casu a prace pri praci s html, xml a programovani (C, Python..). Na Vim jsem velice zvykly a umim v nem psat velice rychle. Sice nedisponuje moc velkou inteligenci pri editaci zminovanych souboru, ale umi bozsky editovat jakykoliv text a predevsim umoznuje rychle pohybovani a zmeny obsahu. U Emacsu jsem narazel casto na nutnost nakonfigurovat tuny veci, nez to zacne vubec neco delat a hlavne jak na to prijit? Vetsinou to vyhral google, protoze dokumentace je opravdu na dlouho. Zajimalo by mne tedy: Prinasi Emacs opravdu nejake zlepseni ve zminovanych pripadech a za jak dlouho se to da naucit (do stadia zabehle a rychle prace)?
10.3.2004 01:15 Jiri Pejchal
Rozbalit Rozbalit vše Je Emacs dobry na html, xml, C, Python..?
Na xml je Emacs NEJLEPSI:-). Mate-li ke xml souboru DTD pouzijte PSGML, mate-li Relax NG schema, puzijte nXML mod. Python mod je soucasti distribuce pythonu.
9.3.2004 16:37 ales
Rozbalit Rozbalit vše prilis mnoho pohromade?
Odpovědět | Sbalit | Link | Blokovat | Admin
zdravim,
nedavno me pobavila hlaska:
"emacs je take pekny desktop, akorat mu chybi poradny textovy editor"
toto je jenom srandicka, ale jak je to napr. s ftp, wwwbrowserem a pod? pokud si chci prohlednout internet, tak se mi spusti links v emacsu? nebo nejaky emacovsky prohlizec?
10.3.2004 01:18 Jiri Pejchal
Rozbalit Rozbalit vše prilis mnoho pohromade?
Praci prez ftp Emacs podporuje. Browsery jsou k dispozici minimalne dva, ale nezkousel jsem:-)

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.