[druckfreundliche Version]
Hauptseite   Impressum   

Der abbrev-mode von Emacs

Kein Mensch hat Lust immer wiederkehrende --- evtl. recht lange Wörter --- immer und immer wieder zu tippen. Deshalb bieten viele Editoren und Textverarbeitungen einen Mechanismus um für solche Wörter entsprechende Abkürzungen zu vereinbaren, die dann entsprechend expandiert werden. Emacs stellt da natürlich keine Ausnahme dar ...

--

Emcas (und natürlich auch XEmacs) bieten dafür z.B. den abbrev-mode und den dabbrev-mode. Der abbrev-mode dient dafür um vorher vereinbarte Abkürzungen zu expandieren, der dabbrev-mode (dynamic abbreviation) bietet eine Expansion von teilweise ausgeschriebenen Wörtern, die bereits einmal in einem Buffer vorgekommen sind. D.h beim dabbrev-mode muß man die Abkürzungen nicht vorher vereinbaren sondern tippt einfach den Anfang eines vorher bereits einmal ausgeschreibenen Wortes ein und drückt dann M-/ so oft, bis man das richte Wort getroffen hat. Mancher benutzt auschließlich den dabbrev-mode und ein anderer den abbrev-mode; jeder der Modi hat seine Vor- und Nachteile, da aber beide miteinander harmonieren muß man sich nicht entscheiden, sondern kann die beiden zusammen einsetzten.

--

In diesem Artikel geht es um den abbrev-mode. Um diesen einzusetzten sollte man ihn erst einmal in der .emacs aktivieren. Was mit den folgenden Zeilen erledigt werden kann.

;; abbrev-mode
(setq-default abbrev-mode t)
(read-abbrev-file"~/.abbrevs")
(setq save-abbrevs t)

Jetzt muß man entweder jeder der 3 Codezeilen per C-x C-e hinter den jeweils schließenden Klammern der Ausdrücke ausführen lassen oder man speichert die .emacs einfach ab und startet Emacs neu (dabei gibt es eine Fehlermeldung, weil die Datei .abbrevs ja zu diesem Zeitpunkt vermutlich noch nicht existiert).

--

Jetzt kann man damit beginnen seine gängigen Abkürzungen zu definieren. Dabei ist zu beachten, daß man für jeden Emacs Major-Mode eigene Abkürzungen vereinbaren kann, oder globale Abkürzungen definieren kann. Möchte man z.B. hpg als globale Abkürzung für Homepage vereinbaren, so gibt man in einem Buffer homepage gefolgt von der Tastenkombination C-x a g ein und gibt auf die Frage 'Global abbrev for "homepage"' hpg ein. Ab jetzt wird in jedem Buffer bei der Eingabe von hpg gefolgt von einem nicht alphanumerischen Zeichen (z.B. Leerzeichen, Zeilenumbruch, /,") das Wort homepage erscheinen. Möchte man statt homepage Homepage haben, so gibt man einfach den ersten Buchstaben der Abkürzung als Großbuchstaben ein, also Hpg; möchte man HOMEPAGE so gibt man einfach die gesamte Abkürzung in Großschreibung ein, also HPG.

Soll eine Abkürzung nur in einem speziellen Major Mode gelten, so vereinbart man die Abkürzung einfach in einem Buffer, der den entsprechenden Major Mode hat und verwendet statt der Tastenkombination zur Vereinbarungen einer globalen Abkürzung die für die eine lokale Abkürzung (C-x a l). Möchte man also z.B. im HTML Modus ctr als Kürzel für center benutzen, so gibt man in einem HTML Buffer center gefolgt von C-x a l gefolgt von ctr ein.

--

Standartmäßig bezieht sich eine Abkürzung immer auf das letzte Wort vor dem Cursor. Möchte man mehrere Worte eine Abkürzung zuweisen, dann muß der Funktion einen numerischen Prefixparameter übergeben. Möchte man "Mit freundlichen Grüßen" der Abkürzung mfg zuordnen so muß man also --- wenn der Cursor hinter Grüßen steht --- C-u 3 C-x a g oder C-u 3 C-x a l eingeben (je nach dem ob es eine globale oder eine lokale Vereinbarung sein soll).

--

Nachdem man einige Kürzel definiert hat sollte man das ganze per M-x write-abbrev-file unter dem in der .emacs vereinbarten Dateinamen abspeichern. Dies ist nur nach den ersten Vereinbarungen nötig. Da save-abbrevs auf TRUE steht wird der Emacs in Zukunft bei jedem Verlassen nachfragen, ob man seinen neuen Abkürzungen abspeichern will.

Möchte man später einige Definitionen wieder loswerden, so kann man per M-x edit-abbrevs die Abkürzungsdatei ganz normal editieren.

Möchte man eine bestehende Abkürzung nicht expandieren, so muß man das auf die Abkürzung folgende Zeichen gequotet eingeben (z.B. HPG<C-q><Space>).

--

Das hier geschriebene sollte eigentlich ausreichen um mit dem abbrev-mode von Emacs "in die Gänge" zu kommen. Zu einem späteren Zeitpunkt werde ich noch einen Artikel zum dabbrev-mode nachreichen.

Link zum Thema

Bücher zum Thema


GNU Emacs
kurz & gut
bei amazon.de

Learning
GNU Emacs
bei amazon.de

Writing GNU
Emacs Extensions
bei amazon.de

UNIX Power Tools
bei amazon.de
Martin Glinski