Emacs ist einer der vielseitigsten und mächtigsten Editoren, die es gibt. In diesem kleinen Artikel beschreibe ich die Installation und Anpassung von Emacs und AucTeX unter Windows sowie die anschließende Anpassung von Emacs selbst.
Die Installation orientiert sich dabei sehr eng an der Anleitung von Uwe Siart, die in der TeXnischen Komödie 4/2004 erschien und auch seiner Homepage zum Download bereitsteht. Daher an dieser Stelle nur ein kurzer Überblick:
Die ersten 9 Schritte kann man sich auch komplett sparen, wenn man sich von der AucTeX-Webseite eine AucTeX-Distribution herunterlädt, die nur ins Emacs-Verzeichnis zu entpacken ist. Voraussetzung für das korrekte Funktionieren ist aber hier, wenn der Emacs nicht verändert wurde.
Emacs ist unter den Editoren eine eierlegende Wollmilchsau. Mit geeigneten Paketen läßt sich so ziemlich alles mit Emacs machen, Emails und netnews lesen, Tetris spielen, etc. Die Frage nach dem Sinn und Unsinn sollte sich jeder selbst beantworten. Ich selbst nutze Emacs für den Umgang mit LaTeX und hatte als Ziel nur die sinnvolle Erweiterung des Emacs mit LaTeX-spezifischen Funktionen. Wer darüberhinaus Ideen für die Emacs Anpassung sucht, findet sie beispielsweise auf http://www.dotemacs. de oder http://www.dotfiles.com.
Folgende Emacs Lisp-Dateien, zu finden sich auf http://centaur.maths.qmw.ac.uk/Emacs/, müssen zusätzlich heruntergeladen werden und beispielsweise in das Emacs/lisp/emacs-lisp Verzeichnis kopiert werden.
;Mein .emacs file
;vom 24.09.2005
; Hinweis: \\
bedeutet, die nächste Zeile muß an diese rangehangen werden
(global-font-lock-mode t)
(require 'pc-mode)
(pc-bindings-mode)
(pc-selection-mode)(setq TeX-auto-save t)
(setq TeX-parse-self t)
(require 'eol-conversion)
(require 'font-menus)
; Jetzt die Hooks, um nach Verzeichnissen und dann
nach Dateien zu sortieren
; http://centaur.maths.qmw.ac.uk/Emacs/
; Floating menu aufrufen mit Ctrl-d, im Immediate Menu
; w32-symlinks um Links zu folgen
(add-hook 'dired-load-hook
(lambda () (require
'w32-symlinks )))
;(add-hook 'dired-load-hook
;(lambda () (load-library "ls-lisp")))
;(add-hook 'dired-load-hook
;(lambda () (require 'dired-explore)))
;(add-hook 'dired-load-hook
;(lambda () (require 'dired-sort-menu)))
;(setq ls-lisp-dirs-first t)
;(setq ls-lisp-ignore-case t)
(defun my-dired-changes ()
"Set my preferences for dired"
(require 'ls-lisp)
(require 'htmlize)
; konvertiert Quellcode nach HTML
; M-x htmlize-buffer
; M-x htmlize-file
(require 'dired-explore)
(require 'dired-sort-menu)
(setq ls-lisp-dirs-first t)
(setq ls-lisp-ignore-case t))
(add-hook 'dired-load-hook 'my-dired-changes)
;(require 'mc)
; automatischer Umbruch nach 90 Zeichen
(add-hook 'text-mode-hook 'turn-on-auto-fill)
(setq-default fill-column 90)
(load "edit-history" )
(setq ehistory-history-length 5)
; which files to ignore
(setq ehistory-ignore-regexp "/\\(browse\\|diary\\|site-diary\\|tags\\| \\
.*rmail.*\\|.*\.tmp\\|.*a[d]*ress.*\\|.*-scores\\|.*\.bbdb\\)$")
(ehistory-load-file-list)
;; ;; One vision of a better picture mode.
(add-hook 'picture-mode-hook 'rm-example-picture-mode-bindings)
(autoload 'rm-example-picture-mode-bindings "rect-mark"
"Example rect-mark key and mouse bindings \\
for picture mode.")
;; Buffer wechseln wie click auf modeline, aber mit
;; tasten...
(defun ska-previous-buffer ()
"Hmm, to be frank, this is just the same as
bury-buffer. \\
Used to wander through the buffer stack with the keyboard."
(interactive)
(bury-buffer))
(defun ska-next-buffer ()
"Cycle to the next buffer with keyboard."
(interactive)
(let* ((bufs (buffer-list))
(entry (1- (length bufs)))
val)
(while (not (setq val (nth entry bufs)
val (and (/= (aref (buffer-name val) 0)
? )
val)))
(setq entry (1- entry)))
(switch-to-buffer val)))
;; Buffer cycling like on modeline
(define-key global-map [(C M shift right)]
'ska-next-buffer)
(define-key global-map [(C M shift left)]
'ska-previous-buffer)
;(autoload 'tetris "tetris" "Fun with
Emacs :)" t)
(setq ispell-program-name "aspell")
; Display settings
; default size and color options for all frames
(setq default-frame-alist
'(
; frame width and height
(width . 100)
(height . 40)
; foreground, background, and cursor colors
(foreground-color . "grey8")
(background-color . "grey92")
(cursor-color . "red3")
) )
;(set-frame-height (selected-frame) 40)
;(set-frame-width (selected-frame) 80) ;; Fenster rückwärts springen
(defun other-window-backward (n)
"Select Nth previous window."
(interactive "p")
(other-window (- n)))
(global-set-key [(C shift down)] 'other-window)
(global-set-key [(C shift up)] 'other-window-backward)
; (cd (getenv "emacsstart"))
(setq ispell-enable-tex-parser t)
(global-set-key [f4] 'kill-buffer-and-window)
(global-set-key [M-f4] 'kill-this-buffer)
;write y instead of yes
(fset 'yes-or-no-p 'y-or-n-p)
;;;;;;;;;;;;;;;;;;;
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(cua-mode t nil (cua-base)))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)
(require 'tex-mik)
(require 'tempo)
(setq transient-mark-mode t)
; `tempo-define-template' returns an interactive function,
which is then
; bound to the appropriate key. The `r' simply stands for `region'. There
; are many more possibilities here.
(add-hook 'LaTeX-mode-hook
'(lambda ()
(local-set-key
"{" (tempo-define-template "TeX-schweif"
'("{" r "}")))
(local-set-key
"(" (tempo-define-template "TeX-rundekl"
'("(" r ")")))
(local-set-key
"[" (tempo-define-template "TeX-eckigek"
'("[" r "]")))
(local-set-key
"^" (tempo-define-template "TeX-exponen"
'("^{" r "}")))
(local-set-key
"_" (tempo-define-template "TeX-subscri"
'("_{" r "}")))
(local-set-key
"$" (tempo-define-template "TeX-dollarm" '("$" r "$")))))
; PSGML
;(add-to-list 'load-path "C:/Programme/emacs-21.3/site-lisp/psgml-1.2.5/")
;(autoload 'sgml-mode "psgml" "Major mode for SGML files"
t)
;(autoload 'xml-mode "psgml" "Major mode for SGML files"
t)
(add-hook 'LaTeX-mode-hook 'turn-on-auto-fill)
(setq reftex-plug-into-AUCTeX t)
(add-hook 'LaTeX-mode-hook 'turn-on-reftex) ; with
AUCTeX LaTeX mode
(add-hook 'latex-mode-hook 'turn-on-reftex) ; with
Emacs latex mode
Dateiverwaltung |
|
---|---|
C-x C-f | Datei öffnen |
C-x C-s | Datei speichern |
C-x s | alle Dateien speichern |
C-x C-k | Datei schließen (kill buffer) |
C-q | aktuellen Befehl stoppen |
C-x u | undo |
Bewegung im Text |
|
C-v | eine Seite vorwärts |
Alt-v | eine Seite rückwärts |
C-p | ein Zeichen hoch |
C-n | ein Zeichen tiefer |
C-b | ein Zeichen zurück |
C-f | ein Zeichen vorwärts |
Alt-f | ein Wort weiter |
Alt-b | ein Wort zurück |
C-a | zum Zeilenanfang |
C-e | zum Zeilenende |
Alt-a | zum Satzanfang |
Alt-e | zum Satzende |
Alt-< | zum Bufferanfang |
Alt-> | zum Bufferende |
Kopieren, Einfügen und Ausschneiden |
|
C-<space> | Marker setzen |
C-u | zum nächsten Marker springen |
C-d | lösche Zeichen unter Cursor |
Alt- | lösche bis zum nächsten Wortanfang |
Alt- | lösche bis zum nächsten Wortende |
C-k | lösche bis zum Zeilenende |
Alt-k | lösche bis zum Satzende |
C-x k | lösche Buffer (schließe die Datei) |
C-w | ausschneiden |
Alt-w | kopieren |
C-y | einfügen |
Bewegung zwischen den Buffers |
|
C-x 1 | auf Einfensterbetrieb umschalten |
C-x 2 | teile Fenster horizontal |
C-x 5 | teile Fenster vertikal |
C-x o | in anderes Fenster wechseln |
C-x b | wähle anderen Buffer |
Suchen und Ersetzen |
|
C-s | inkrementelle Suche |
Esc | beende Suchmodus |
C-r | suche rückwärts |
Alt-x % | suchen & ersetzen mit Nachfragen |
Alt-x replace-string | einfaches suchen & ersetzen |
C-Alt-s | RegExp Suche |
C-Alt-r | RegExp Suche rückwärts |
Hilfesystem |
|
C-h | Hilfesystem |
C-h t | Tutorial |
Reguläre Ausdrücke |
|
---|---|
. | jedes Zeichen außer \n |
* | 0 oder mehr Wiederholungen |
+ | 1 oder mehr Wiederholungen |
? | 0 oder 1 Wiederholung |
\| | oder |
\( ... \) | Gruppierung |
^, $ | Zeilenanfang, ende |
\< \> | Wort |
\` \´ | Buffer |
[ ... ] | Zeichenmenge |
[^ ... ] | Negation der Zeichenmenge |
AucTeX und LaTeX Shortcuts |
|
---|---|
C-c C-m (oder C-c Ret) | LaTeX Macro einfügen |
C-c-s | Gliederungsebene einfügen |
C-c-t-p | Umschaltung LaTeX/pdfLaTex |
C-c-t-i | Umschaltung Interaktiver Modus |
C-c-e | Umgebung einfügen |
C-c-] | akt. Umgebung schließen |
C-c-f-b | fettgedruckten Text einfügen |
C-c-f-i | kursiven Text einfügen |
C-c-f-e | hervorgehobenen Text einfügen |
C-c-f-s | geneigten Text einfügen |
C-c { | geschw. Klammer einfügen |
M-x htmlize-buffer |
aktuellen Buffer umwandeln |
M-x htmlize-file |
Datei umwandeln |
M-x htmlize-many-files |
mehrere Dateien umwandeln |
M-x htmlize-many-files-dired |
mehrere Dateien im dired Modus umwandeln |