[[Vorlage(Getestet, focal, bionic)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Paketquellen_freischalten/PPA: Verwenden eines PPAs] optional [:Programme_kompilieren:] optional [:Terminal: Ein Terminal öffnen] }}} [[Inhaltsverzeichnis(2)]] [[Bild(./emacs_icon.png, 48, align=left)]] [wikipedia:emacs:GNU Emacs] ist ein sehr umfangreicher und plattformunabhängiger Editor, der durch einen eigenen [wikipedia:Lisp:]-Dialekt ([https://www.gnu.org/software/emacs/manual/eintr.html Emacs Lisp] {en}) erweiterbar ist. Da seine Steuerung hauptsächlich auf Tastenkombinationen basiert, bedarf es einiger Einarbeitung, um alle seine Möglichkeiten intensiv nutzen zu können. Durch eine hohe Anzahl an Plugins ist der Editor in nahezu allen Bereichen einsetzbar. Es stehen beispielsweise Erweiterungen für Dateiverwaltung, Email und News, IRC, Kompilierungen, Websurfen, uvm. zur Verfügung. = Installation = Es gibt einige Möglichkeiten Emacs zu installieren. Dabei stehen verschiedene Versionen über die Paketverwaltung, Snaps und PPA zur Verfügung. Diese Möglichkeiten werden im separaten Artikel [:Emacs/Installation:] beschrieben. Für den "Schnellstart" kann Emacs über [:APT:] installiert werden: {{{#!vorlage Paketinstallation emacs, universe }}} = Bedienung - Grundlagen = == Starten == Emacs ist bei Ubuntu-Varianten mit einem Anwendungsmenü entweder unter ''"Anwendungen -> Entwicklung -> GNU Emacs"'', ''"Anwendungen -> Zubehör -> GNU Emacs"'' und/oder ''"Anwendungen -> Programmierung -> GNU Emacs"'' zu finden. Man kann den Editor aber auch in der Konsole[3] durch {{{#!vorlage Befehl emacs # Start mit GUI emacs -nw # Start im Terminal, --no-window-system }}} starten. == Tutorial == Emacs bietet beim Start ein Tutorial, welchem man für die ersten Schritte folgen sollte, da es auch die grundlegenden Konzepte der [#Buffer-und-Minibuffer Buffer] und verschiedenen [#Modi Modi] einführt. Anfangs ist es hilfreich sich eine der gebotenen Übersichten parallel zu öffnen; die GNU Software Foundation bietet dafür verschiedene [https://www.gnu.org/software/emacs/refcards/ Referenzkarten] {en}, wie die deutschsprachige PDF-Referenz unter [https://www.gnu.org/software/emacs/refcards/pdf/de-refcard.pdf] {de} an. == Helfer == Um gerade Anfangs zu ermitteln, was eine Taste oder eine Funktion bewirkt, oder welchen Inhalt eine Variable hat, bietet Emacs verschiedene Funktionen, wie bspw.: {{{#!code lisp (describe-key &optional KEY UNTRANSLATED UP-EVENT) (describe-function FUNCTION) (describe-variable VARIABLE &optional BUFFER FRAME) }}} Interaktiv anwendbar sind die Funktionen über folgende Tastenkombination: [[Vorlage(Tasten,ALT+x)]] {{{#!vorlage befehl describe-key}}} [[Vorlage(Tasten,return)]] Dabei steht ein Vervollständigungsmodus mittels [[Vorlage(Tasten, TAB )]] zur Verfügung. == Buffer und Minibuffer == Emacs arbeitet mit sogenannten Puffern (auf englisch: "buffer"). Diese ermöglichen das schnelle Arbeiten im Speicher, inklusive einer ''"Rückgängig"''-Funktion, ohne die bestehende Datei zu verändern. Auf diese Puffer lassen sich beliebige Elisp-Funktionen anwenden. Bei der Arbeit in geteilten Ansichten sind Puffer auf die selbe Datei gleich - alle Änderungen werden auch in den anderen Fenstern übernommen! Ebenfalls kommt ein Minipuffer zum Einsatz, der prinzipiell nur die untere Zeile des Editors darstellt. In diesem können aus jedem Modus heraus (Elisp-)Befehle abgesetzt werden. Ein neuer Puffer eignet sich ebenfalls für das Ausprobieren eigener Elisp-Routinen. Beispiel: [[Vorlage(Tasten,ctrl+x)]], [[Vorlage(Tasten,b)]] {{{#!vorlage Befehl NeuerName}}} {{{#!code lisp (message "%s" "ubuntuusers.de")}}} [[Vorlage(Tasten,ALT+x)]] {{{#!vorlage befehl eval-buffer}}} ergibt die Ausgabe `ubuntuusers.de` im Minipuffer, so wie im Puffer ''*Messages*''. == Modi == Emacs bietet verschiedene Modi, die je nach zu bearbeitender Datei andere Funktionen bereitstellt, so dass man bspw. C-Code direkt kompilieren kann, Markdown formatiert angezeigt wird, oder wie im Falle von [packages:org-mode:] eine Vielzahl an Strukturmöglichkeiten und Listenoptionen bereitgehalten werden. Der aktuelle Modus wird in der Statuszeile dargestellt. = Konfiguration = Die Konfiguration des Emacs findet ausschließlich in elisp statt. Dabei steht eine interne Paketverwaltung bereit, um bereits fertige Erweiterungen zu installieren. Zusätzlich kann man seine persönliche Konfiguration in der Datei '''~/.emacs''', bzw. innerhalb des Ordners '''~/.emacs.d''' sichern. Ausnahmen wie Snap-Installationen oder [:Emacs/Erweiterungen#Komplettpakete:Komplettpakete] können abweichende Pfade/Dateien nutzen. Eigene, komplexere elisp-Skripte sollten in '''.el'''-Dateien ausgelagert und ggf. [:Emacs/Konfigurationen#Eigene-Pakete:kompiliert] werden. Beispiele finden sich unter [:Emacs/Konfigurationen:]. == Spracheinstellungen == Wer die Menüleiste benutzt oder über [[Vorlage(Tasten, F10)]] aufruft, wird trotz Lokalisierung immer ein englisches Menü haben. Das bedeutet jedoch nicht, dass Emacs generell keine anderen Sprachen unterstützt. Normalerweise nutzt Emacs zur Darstellung der Zeichen, etc. die `locale`-Einstellungen, es gibt jedoch verschiedene Sprachunterstützungspakete unter ''Options'' - ''Multilingual Environment'', um dies zu ändern. Siehe auch [https://www.gnu.org/software/emacs/manual/html_node/emacs/Language-Environments.html GNU Emacs - Language-Environments] {en}. == Erweiterungen installieren == Emacs lässt sich durch das eigene Paketverwaltungssystem, [https://elpa.gnu.org/ ELPA] {en} (GNU Emacs Lisp Package Archive), beliebig erweitern. Das zusätzliche, semi-offizielle Nicht-GNU-Repository ist [github:melpa/melpa:MELPA] (Milkypostman's Emacs Lisp Package Archive), welches auch in der Emacs-Dokoumentation erwähnt wird. Darüber hinaus finden sich verschiedene Erweiterungen zur manuellen Installation im Netz, die jeweils eine Anleitung zur Integration mitbringen. Einige Pakete werden in den Ubuntu-Quellen bereitgestellt. Diese lassen sich systemweit über die [:Paketverwaltung:] installieren, insofern man eine der passenden [:Emacs/Installation:Installationsarten] wählt. Eine Suche, welche Pakete verfügbar sind, erreicht man am schnellsten mittels {{{#!vorlage Befehl apt list elpa-*}}} Die Suche mittels `apt search emacs` bietet mehr Pakete (>500), ist dadurch aber auch sehr unübersichtlich. Die Alternative Möglichkeit, Pakete aus dem ELPA direkt zu installieren, wird innerhalb von Emacs über die Funktion `package-install` oder das Optionen-Menü bereitgestellt. Beispiele findet man unter [:Emacs/Erweiterungen:]. = Problemlösungen = == Ubuntu 18.04 - GPG-Schlüssel == Der GPG-Schlüssel des ELPA hat sich geändert, siehe [http://elpa.gnu.org/packages/gnu-elpa-keyring-update.html] {en}. In Kürze: {{{#!code bash #alte Schlüssel deaktivieren: gpg --homedir ~/.emacs.d/elpa/gnupg --quick-set-expire 474F05837FBDEF9B 1y #neuen Schlüssel holen gpg --homedir ~/.emacs.d/elpa/gnupg --receive-keys 066DAFCB81E42C40}}} Für die aktuellen Schlüsselwerte bitte dem Link folgen. == Debug-Modus == Um Fehler besser ermitteln und nachvollziehen zu können, kann Emacs im Debug-Modus gestartet werden: {{{#!vorlage Befehl emacs --debug-init }}} = Links = == intern == * [:Emacs/Installation:] - Installationsarten * [:Emacs/Erweiterungen:] - Beispiele für Erweiterungen * [:Emacs/Konfigurationen:] - Konfigurations-Schnipsel in elisp * [:Editoren:] == extern == * [https://www.gnu.org/software/emacs/ Projektseite] {en} * [https://www.emacswiki.org/emacs?interface=de EmacsWiki] -{en}/{de} teilweise in deutsch * [https://www.gnu.org/software/emacs/manual/eintr.html Emacs Lisp] {en} - Handbuch für elisp # tag: Editor, Emacs