Benutzer:Amo: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Amo (Diskussion | Beiträge) |
K |
||
(23 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
==Vorbemerkungen== |
|||
Der Emacs ist unter Linux (einer) der wichtigste(n) Editor(en). Für |
|||
Neulinge ist er nicht unbedingt auf Anhieb problemlos bedienbar. Dies |
|||
liegt vor allem daran, dass er im Gegensatz zu bekannten |
|||
Computerprogrammen andere Konzepte verfolgt. Dies äußert sich vor |
|||
allem darin, dass im Zusammenhang mit Emacs ungewohnte Begriffe für |
|||
ansich Bekanntes verwendet werden (Siehe Kapitel Konzepte). Außerdem |
|||
werden für die meisten Aktionen auch andere Shortcuts verwendet. Eine |
|||
Übersicht über die wichtigsten ist im letzten Kapitel zu finden. Ein |
|||
wichtiger Punkt ist, dass der Emacs sehr stark auf Bedienung mit der |
|||
Tastatur ausgelegt ist. Er läßt sich zwar auch mit der Maus bedienen |
|||
verliert aber dadruch einen seiner Vorteile. Deshalb ist es auf jeden |
|||
Fall notwendig, eine kurze Einleitung zu lesen. <br> |
|||
Gründe die für Emacs sprechen:<br> |
|||
* spezifische Unterstützung verschiedener Dateiformate (z.B. durch formatabhängige Menüs, Highlighting) |
|||
* durch Shortcuts gut bedienbar (schnell!) |
|||
* besitzt einen Textmodus (arbeiten über ssh) |
|||
* Matlab-, C/C++-, LaTeX-, Fortran, mail-, Browser-, html-, java-Umgebung |
|||
Je nachdem in welcher Sprache programmiert wird ändern sich die zur |
|||
Verfügung stehenden Shortcuts, die Menüzuteilung und teilweise die zur |
|||
Verfügung stehenden Icons in der Symbolleiste (z.B. News lesen mit |
|||
gnus).<br> |
|||
Im Rahmen dieser Einführung werden nur die wichtigsten Funktionen |
|||
vorgestellt. Wer an den weiteren Funktionen interressiert ist wird |
|||
auf das [http://www.gnu.org/software/emacs/manual/ emacs manual] verwiesen. |
|||
===Starten von Emacs=== |
|||
Gestartet wird Emacs mit Hilfe des entsprechenden Menüeintrages oder |
|||
durch Eingabe des [[Shell]]befehles |
|||
$ emacs |
|||
Soll der Editor im Textmodus (also ohne graphische Oberfläche) |
|||
verwendet werden ist |
|||
$ emacs -nw |
|||
einzugeben. |
|||
==Grundwissen== |
|||
Hier werden die wichtigsten Aspekte im Umgang mit Emacs erklärt. |
|||
Außerdem werden die wichtigsten Tastenkombinationen vorgestellt. Eine |
|||
etwas größere Liste ist am Ende des Dokuments zu finden. |
|||
===Syntax bei Tastenkombinationen=== |
|||
Bei der Beschreibung von Tastenkombinationen werden folgende Abkürzungen verwendet: |
|||
*C-x: Control-Key (Strg oder Ctrl) gleichzeitig gedrückt mit einer weiteren Taste (hier x). |
|||
*C-x s: Control-Key gleichzeitig gedrückt mit einer weiteren Taste (hier x); Nach dem Loslasen drücken einer weiteren Taste (hier s). |
|||
*M-x: Meta-Key (Alt) gleichzeitig gedrückt mit einer weiteren Taste. |
|||
*C-M-x: Control- und Meta-Key gleichzeitig gedrückt mit einer weiteren Taste. |
|||
*ESC: Escape-Key (Esc) gleichzeitig gedrückt mit einer weiteren Taste. |
|||
*RET: Return- oder Eingabetaste. |
|||
*SPC: Space oder Leerzeichen. |
|||
*TAB: Tabulator. |
|||
*DEL: Delete- oder Entfern-Taste. |
|||
*BSP: Backspace- oder Lösch-Taste. |
|||
===Markieren=== |
|||
Tastenkombinationen: |
|||
{| border="1" cellpadding="5" cellspacing="0" |
|||
|- |
|||
|'''Aktion''' || '''Shortcut''' |
|||
|Eine Marke setzen || C-SPC |
|||
|- |
|||
|Paragraph markieren || M-h |
|||
|- |
|||
|Gesamten Buffer markieren || C-x h |
|||
|} |
|||
Um einen Bereich zu markieren wird mit der Tastenkombination C-SPC eine |
|||
Marke gesetzt und mit den Cursortasten der gewünschte Bereich |
|||
markiert. Mit Hilfe der Maus ist das markieren eines Bereiches auf |
|||
gewohnte Weise möglich.<br> |
|||
Ein Paragraph endet und beginnt in der Regel mit einer Leerzeile. |
|||
===Kopieren, Ausschneiden, Einfügen und Löschen=== |
|||
Auch hier werden eigene Ausdrücke (und Shortcuts) verwendet. Folgende Tabelle gibt |
|||
eine Übersicht: |
|||
{| border="1" cellpadding="5" cellspacing="0" |
|||
|- |
|||
|'''Aktion''' || '''Bezeichnung''' || '''Shortcut''' |
|||
|- |
|||
|kopieren || copy || M-w |
|||
|- |
|||
|ausschneiden|| kill || C-w |
|||
|- |
|||
|einfügen || yank || C-y |
|||
|} |
|||
===Maustastenbelegung=== |
|||
Im Emacs ist oft die mittlere Maustaste (Mouse-2) anstatt wie erwartet |
|||
die linke zu verwenden. |
|||
===Automatischer Zeilenumbruch=== |
|||
Zeilen können im Emacs automatisch umbrochen werden. Um dies zu |
|||
aktivieren ist im Menü Options der Eintrag ''Word Wrap in Text Modes |
|||
(Auto Fill)'' zu wählen. Oft ist nach dem Editieren eines Bereiches |
|||
das neuerliche umbrechen der Zeilen notwendig. Um dies zu erreichen |
|||
markiert man diesen Bereich und aktiviert durch drücken von M-x den |
|||
Minibuffer (siehe auch entsprechendes Kapitel). In den Minibuffer wird |
|||
dann ''fill-region'' eingegeben unt die Entertaste betätigt. |
|||
==Buffer, Frame und Window== |
|||
EMACS stellt für jeden geöffneten File einen Buffer bereit, der den |
|||
gesamten Inhalt dieses Files beinhaltet. Außerdem können Buffer noch |
|||
für andere Aufgaben verwendet werden: |
|||
* *scratch*: Ein Bereich für Notizen, die nicht automatisch zum Speichern vorgesehen sind. |
|||
* *messages*: Nachrichten von EMACS. |
|||
* andere: Z.B. für die Ausgabe von Programmen, die aus EMACS aufgerufen werden. |
|||
Die Darstellung der Buffer erfolgt in sogenannten Frames (eigene |
|||
Fenster am Bildschirm), die unter Umständen in mehrere Windows |
|||
(Bereiche in einem Frame) aufgeteilt sein können. Der Inhalt eines |
|||
Buffers kann nun in einem Window dargestellt werden, wobei der Inhalt |
|||
eines Buffers auch in mehreren Windows vorhanden sein kann. Dies hat |
|||
den Vorteil, dass man verschiedene Bereiche eines Files mehr oder |
|||
weniger gleichzeitig bearbeiten kann. Man kann damit z.B. recht |
|||
einfach Teile vom Anfang eines langen Files in einem weit entfernten |
|||
Bereich einfügen. |
|||
Im unteren Bereich des Frames gibt es noch den sogenannten Minibuffer |
|||
in dem EMACS-Kommandos ausgeführt werden. Dorthin springt z.B. der |
|||
Editor, wenn ein File geöffnete wird. |
|||
Zwischen dem Window in dem der Buffer dargestellt wird und dem |
|||
Minibuffer liegt die '''Mode Line'''. Mehr Information dazu ist |
|||
[http://www.gnu.org/software/emacs/manual/html_node/Mode-Line.html#Mode%20Line |
|||
hier] zu finden. |
|||
==Der Minibuffer== |
|||
Der Minibuffer dient der Kommunikation mit dem Editor. Er erfüllt drei |
|||
Aufgaben: |
|||
# Nach Betätigung eines Shortcuts oder dem Aufruf einer Funktion werden hier eventuell notwendige Argumente abgefragt. |
|||
#* Zum Beispiel wird hier nach Betätigung von ''C-x C-f (find file)'' der Dateiname abgefragt. |
|||
# Aufrufen von Funktionen, die an keine Tastenkombination gebunden sind. Dabei muss der Minibuffer zuerst durch Eingabe von ''M-x'' aktiviert werden. Der Minibuffer wartet nun auf die Angabe der gewünschten Funktion. |
|||
# Ausgabe von Meldungen an den Benutzer. |
|||
Auch im Minibuffer steht für fast alle Situationen eine |
|||
Komplettierungsfunktion zur Verfügung. Diese kann mit Hilfe der [TAB] |
|||
Taste aufgerufen werden (damit werden eindeutige Zeichenfolgen |
|||
komplettiert). Zweimaliges schnelles Betätigen der [TAB] Taste öffnet |
|||
ein Fenster in dem alle Komplettierungsmöglichkeiten angezeigt werden. Die |
|||
[SPACE] Taste dient zur Komplettierung von maximal einem Wort.<br> |
|||
Begonnene Eingaben werden mit der Tastenkombination |
|||
''C-g'' abgebrochen. |
|||
==Emacs und Matlab== |
|||
Am besten startet man den Editor mit eingabe von <tt> edit </tt> am |
|||
matlab prompt. Sollte hier nicht der Emacs geöffnet werden bitte den |
|||
Anweisungen unter Punkt 2 (Configure MATLAB to use EmacsLink) der Datei |
|||
/afs/itp.tugraz.at/opt/matlab/7/java/extern/EmacsLink/install.html |
|||
folgen. Der Matlabmouds wird automatisch geladen, wenn eine Datei mit |
|||
der Endung .m geöffnet wird. In diesem Modus existiert ein Menü MATLAB |
|||
das die Sonderfunktionen dieses Modus zur Verfügung stellt. Daneben |
|||
existiert ein Menü mit dem Namen Mdb das Funktionen zum Debuggen von |
|||
Matlab Skripten enthält.<br> |
|||
'''Anmerkungen''':<br> |
|||
* Zu beachten ist, dass das Ausführen von Skripten durch die Tastenkombination ''C-c C-s'' nur möglich ist, wenn sich Matlab im richtigen Verzeichnis befindet. (Wechselbar mit dem Befehl <tt> cd </tt> im Matlab command window oder im Fenster ''current directory''). |
|||
* Die Verknüpfung mittels Emacs-Link funktioniert nicht, wenn Matlab mit der Kommandozeilenoption <tt> -nojvm </tt> gestartet wird. Soll matlab in einem XTerm verwendet werden und auch Emacs-Link zur Verfügung stehen ist die Kommandozeilenoption <tt> -nodesktop</tt> zu verwenden. |
|||
==Emacs konfigurieren== |
|||
===Graphisch=== |
|||
Das Options Menü stellt die Schnittstelle zur graphischen |
|||
Konfiguration von Emacs dar. Hier sollten auf jeden Fall die ersten |
|||
drei Punkte ausgewählt und anschließend ''Save Options'' geklickt |
|||
werden. Ist es unerwünscht, dass Zeilen automatisch umgebrochen werden |
|||
ist der Punkt ''Word Wrap in Text Modes'' abzuwählen. |
|||
Unter Options -> Customize Emacs -> Browse Customization Groups |
|||
Kann Emacs wesentlich detaillierter konfiguriert werden. Allerdings |
|||
ist es hier nicht ganz leicht, die richtigen Einträge zu finden. Man |
|||
kann anschließend Änderungen über den Knopf ''State'' speichern, oder |
|||
auch nur für die aktuelle Sitzung aktivieren. Wird die Einstellung |
|||
gespeichert so fügt Emacs in seine Konfigurationsdatei |
|||
~/.emacs |
|||
einen Eintrag hinzu (~ steht wie üblich für das Home-Verzeichnis). |
|||
===Konfigurationsdatei=== |
|||
Emacs kann auch durch direktes ändern der Konfigurationsdatei |
|||
konfiguriert werden. Auch hier wird auf das |
|||
[http://www.gnu.org/software/emacs/manual/html_node/Init-File.html#Init%20File manual] |
|||
verwiesen.<br> |
|||
==Tips== |
|||
===Shortcuts definieren=== |
|||
Shortcuts können in der <tt> .emacs-Datei</tt> definiert werden. Folgendes Listing |
|||
bindet die Tasten [f4] an die Funktion ''query-replace'' (interaktives |
|||
suchen und ersetzen), und die Taste [f3] an ''dabbrev-expand'' |
|||
(dynamisches expandieren von Zeichenketten): |
|||
(global-set-key [f4] 'query-replace) |
|||
(global-set-key [f3] 'dabbrev-expand) |
|||
===Wichtige Funktionen=== |
|||
...nach Meinung des Autors |
|||
* query-replace |
|||
* tags-query-replace |
|||
* dabbrev-expand |
|||
* compile |
|||
* comment-region |
|||
* uncomment-region |
|||
==Tabellen wichtiger Shortcuts== |
|||
===Files,Buffers und Windows=== |
|||
{| border="1" cellpadding="5" cellspacing="0" |
|||
|'''TASTE'''|| '''BEDEUTUNG''' ||||'''TASTE''' ||'''BEDEUTUNG''' |
|||
|- |
|||
|C-z || Suspend |||| C-x C-c ||Beendet |
|||
|- |
|||
|C-x C-s|| Speichert File |||| C-x s ||Speichert alle Files |
|||
|- |
|||
|C-x C-w|| Speichert File als |||| C-x C-v ||Ersetzt File |
|||
|- |
|||
|C-x C-f|| Öffnet File |||| C-x i ||Einfügen eines Files |
|||
|- |
|||
|C-x b || Anderer Buffer |||| C-x k ||Killt (entfernt) Buffer |
|||
|- |
|||
|C-x C-b|| Liste aller Buffer |||| || |
|||
|} |
|||
Eine Eigenart von EMACS ist die Tatsache, dass man für das Öffnen |
|||
eines neuen, nicht existierenden Files ebenfalls C-x C-f für das |
|||
Anlegen verwendet. Man wird dann im Minibuffer zum Eingeben des |
|||
Filenamens aufgefordert. |
|||
{| border="1" cellpadding="5" cellspacing="0" |
|||
|'''TASTE'''|| '''BEDEUTUNG''' ||||'''TASTE''' ||'''BEDEUTUNG''' |
|||
|- |
|||
|C-x 2 || Split Window |||| C-x 5 2 ||Neuer Frame |
|||
|- |
|||
|C-x 0 || Entfernt Window |||| C-x 5 0 ||Entfernt Frame |
|||
|- |
|||
|C-x 1 || Entfernt andere Windows |||| C-x 3 ||Split Window seitlich |
|||
|- |
|||
|C-M-v || Scrollt anderes Fenster |||| C-x ^ ||Macht Window größer |
|||
|- |
|||
|C-x { || Macht Window schmäler |||| C-x } ||Macht Window breiter |
|||
|- |
|||
|C-x o || Cursor in anderes Window|||| C-x 5 o ||Cursor in anderen Frame |
|||
|- |
|||
|C-x 4 b|| Auswahl Buffer in anderem Window||||C-x 5 b ||Auswahl Buffer in anderem Frame |
|||
|- |
|||
|C-x 4 C-o|| Buffer in anderem Window ||||C-x 5 C-o ||Buffer in anderem Frame |
|||
|- |
|||
|C-x 4 f|| Öffne File in anderem Window ||||C-x 5 f ||Öffne File in anderem Frame |
|||
|} |
|||
===Navigation durch den Buffer=== |
|||
{| border="1" cellpadding="5" cellspacing="0" |
|||
|'''TASTE'''|| '''BEDEUTUNG''' ||||'''TASTE''' ||'''BEDEUTUNG''' |
|||
|- |
|||
|C-b || Buchstabe rückwärts|||| C-f || Buchstabe vorwärts |
|||
|- |
|||
|M-b || Wort rückwärts |||| M-f || Wort vorwärts |
|||
|- |
|||
|C-p || Zeile rückwärts |||| C-n || Zeile vorwärts |
|||
|- |
|||
|C-a || Zeilenanfang |||| C-e || Zeilenende |
|||
|- |
|||
|M-a || Satz rückwärts |||| M-e || Satz vorwärts |
|||
|- |
|||
|M-{ || Paragraph rückwärts ||||M-} || Paragraph vorwärts |
|||
|- |
|||
|M-x [ || Seite rückwärts |||| M-e ] || Seite vorwärts |
|||
|- |
|||
|C-M-a || Funktion rückwärts|||| C-M-e || Funktion vorwärts |
|||
|- |
|||
|M-< || Bufferanfang |||| M-> || Bufferende |
|||
|- |
|||
|M-v || Scroll Schirm rückwärts||||C-v || Scroll Schirm vorwärts |
|||
|- |
|||
|C-x < || Scroll Schirm links ||||C-x >|| Scroll Schirm rechts |
|||
|- |
|||
|C-u C-l || Zeile in Schirmmitte |||| || |
|||
|} |
|||
===Markieren, Kopieren und Löschen=== |
|||
{| border="1" cellpadding="5" cellspacing="0" |
|||
|'''TASTE'''|| '''BEDEUTUNG''' ||||'''TASTE''' ||'''BEDEUTUNG''' |
|||
|- |
|||
|C-SPC || Setze Markierung|||| C-x C-x || Tausche Markierung und Cursor |
|||
|- |
|||
|M-h || Markiere Paragraph|||| C-x C-p || Markiere Seite |
|||
|- |
|||
|C-M-h || Markiere Funktion|||| C-x h || Markiere Buffer |
|||
|- |
|||
|BSP || Entferne Zeichen rückwärts|||| DEL || Entferne Zeichen vorwärts |
|||
|- |
|||
|M-DEL || Lösche Wort rückwärts|||| M-d || Lösche Wort vorwärts |
|||
|- |
|||
|M-0 C-k|| Lösche Zeile rückwärts|||| C-k || Lösche Zeile vorwärts |
|||
|- |
|||
|C-x DEL|| Lösche Satz rückwärts|||| M-k || Lösche Satz vorwärts |
|||
|- |
|||
|C-w || Lösche Region |||| M-w || Kopiere Region |
|||
|- |
|||
|C-y || Einfügen |||| M-y || Tauscht letzte Einfügung gegen vorherige |
|||
|} |
|||
Als Region bezeichnet man dabei einen markierten Bereich. Diese kann |
|||
sowohl mit Hilfe der Tastatur, als auch mit Hilfe der Maus (linke |
|||
Taste) markiert werden. Das Einfügen erfolgt ebenfalls mit Hilfe einer |
|||
Tastenkombination C-y, bzw. mit Hilfe der mittleren Maustaste. |
|||
===Formatierung, Änderung, Tausch=== |
|||
{| border="1" cellpadding="5" cellspacing="0" |
|||
|'''TASTE'''|| '''BEDEUTUNG''' ||||'''TASTE''' ||'''BEDEUTUNG''' |
|||
|- |
|||
|TAB || Einrückung Zeile|||| C-M-\ || Einrückung Region |
|||
|- |
|||
|C-x TAB|| Einrückung Region erzwungen|||| || |
|||
|- |
|||
|C-o || Neue Zeile |||| C-M-o ||Restliche Zeile nach unten |
|||
|- |
|||
|C-x C-o|| Entferne leere Zeilen|||| M-^ || Verbinde Zeile mit voriger |
|||
|- |
|||
|M-\ || Entferne leere Zeichen|||| M-SPC|| Exakt ein Leerzeichen |
|||
|- |
|||
|M-q || Fülle Paragraph|||| C-x f || Setzte Füll Spalte |
|||
|- |
|||
|M-u || Großbuchstaben Wort (upper)|||| M-l|| Kleinbuchstaben Wort (lower) |
|||
|- |
|||
|M-c || Erster Buchstaben groß (capitalize)|||| || |
|||
|- |
|||
|C-x C-u|| Großbuchstaben Region (upper)|||| C-x C-l|| Kleinbuchstaben Region (lower) |
|||
|- |
|||
|C-t || Austausch Zeichen |||| M-t ||Austausch Worte |
|||
|- |
|||
|C-x C-t|| Austausch Zeilen |||| || |
|||
|} |
|||
===Suchen und Ersetzen=== |
|||
{| border="1" cellpadding="5" cellspacing="0" |
|||
|'''TASTE'''|| '''BEDEUTUNG''' ||||'''TASTE''' ||'''BEDEUTUNG''' |
|||
|- |
|||
|C-s || Suche vorwärts |||| C-r || Suche rückwärts |
|||
|- |
|||
|M-p || Wähle vorherigen Suchstring|||| M-n || Wähle nächsten Suchstring |
|||
|- |
|||
|RET || Beende Suche |||| C-g || Abbruch der Suche |
|||
|- |
|||
|M-% || Suche und Ersetzen (interactiv) |||| || |
|||
|} |
|||
Im Suchen und Ersetzen Modus M-% sind die folgenden Antworten möglich: |
|||
? Hilfe; SPC ersetze und geh weiter; , ersetze und bleibe am selben |
|||
Platz; . ersetze und beende; DEL ersetze nicht und geh weiter; ! |
|||
ersetze alle Weiteren; ^ zurück zum vorherigen Suchresultat; RET |
|||
beende den Ersetzungsmodus; E editiere die Ersetzungszeichen. |