Tipps mit Elisp und anderes …
Text Properties
Ersetzen eines Strings gegen etwas anderes
Cons: copy/yank only the replaced string is seen
; run it in scratch buffer (let ((a "foobarbaz")) (put-text-property 0 (length a) 'display (make-string (length a) ?*) a) (insert a))
String Bestandteile unsichtbar machen
Pros: copy/yank gives you the complete string (usefull for hiding stuff)
; run it in scratch buffer (let ((a "foobarbaz")) (put-text-property 1 (length a) 'invisible t a) (insert a))
Setzten von Vorder- und Hintergrundfarbe
(let ((a "foobarbaz")) (put-text-property 0 (length a) 'font-lock-face '(:background "cyan" :foreground "cyan") a) (insert a))
Create ASCII Graphs picture-mode / artist-mode
In org-mode in the ditaa Source Block
hit C-c C-c
and you will be routed in a separat frame with picture-mode
and artist-mode
as minor mode.
Zuerst sollte man mit der Maus an das untere Ende des Buffers klicken und sich dann das entsprechende Malwerkzeug aus der Leiste oder via ido http://www.emacswiki.org/emacs/ArtistMode aussuchen. Sinnvoll ist hier sicher erst einmal rectangle
, denn damit kann man einiges anstellen. Ist das entsprechende Malelement ausgewählt, so kann man es mit RET
aktivieren oder deaktivieren. Ist es akktiv, so erschein ein *
neben dem Element. Ist es inaktiv, so erscheint nichts.
Rectangle kopieren
Bereich markieren und kopieren
C-x r r
Man muss dann auch noch eine Registernummer eingeben.
Bereich einfügen
C-x r g
So kann man auch den Abstand zwischen zwei Objekten vergrößern/verkleinern.
Whitespace Rectangles
Will man beispielsweise eine vertikale Linie weiter nach rechts verschieben, alse Leerzeichen / Whitespaces einfügen, so die Anzahl an Whitespace markieren und dann > Blank out the region-rectangle, shifting text right.
=C-x r o
Allgemeine Rectangele Mode
Leerzeilen hinter der markierten Zeile einfügen
C-o
Leerzeilen löschen
Bereich markieren und Entf
drücken oder in die Zeile gehen, bis zu der man löschen will und dann Entf
drücken. Geht es einmal nich weiter, die Zeilen markieren und dann Entf
Hooks im picture-mode zum besseren Arbeiten
(setq picture-mode-hook (quote (linum-mode hl-line-mode ruler-mode)))
Der ruler-mode
wird von einer anderen Zeile überschrieben. Er müsste noch einmal separat aktiviert werden.
ido stuff in artist-mode – get the malwerkzeuge more easy
;;; integrate ido with artist-mode (defun artist-ido-select-operation (type) "Use ido to select a drawing operation in artist-mode" (interactive (list (ido-completing-read "Drawing operation: " (list "Pen" "Pen Line" "line" "straight line" "rectangle" "square" "poly-line" "straight poly-line" "ellipse" "circle" "text see-thru" "text-overwrite" "spray-can" "erase char" "erase rectangle" "vaporize line" "vaporize lines" "cut rectangle" "cut square" "copy rectangle" "copy square" "paste" "flood-fill")))) (artist-select-operation type)) (defun artist-ido-select-settings (type) "Use ido to select a setting to change in artist-mode" (interactive (list (ido-completing-read "Setting: " (list "Set Fill" "Set Line" "Set Erase" "Spray-size" "Spray-chars" "Rubber-banding" "Trimming" "Borders")))) (if (equal type "Spray-size") (artist-select-operation "spray set size") (call-interactively (artist-fc-get-fn-from-symbol (cdr (assoc type '(("Set Fill" . set-fill) ("Set Line" . set-line) ("Set Erase" . set-erase) ("Rubber-banding" . rubber-band) ("Trimming" . trimming) ("Borders" . borders) ("Spray-chars" . spray-chars)))))))) (add-hook 'artist-mode-init-hook (lambda () (define-key artist-mode-map (kbd "C-c C-a C-o") 'artist-ido-select-operation) (define-key artist-mode-map (kbd "C-c C-a C-c") 'artist-ido-select-settings)))
Texte / Chars löschen ohne Verschiebungen
C-u 4 C-d
löscht die 4 folgenden Zeichen ohne dass nachfolgende verschoben werden. So kann man Texte ganz gut löschen.
Dateinamen / kompletten Pfad im dired erhalten
Im dired Baum:
w
(dired-copy-filename-as-kill &optional ARG)C-u 0 w
With a zero prefix arg, use the absolute file name of each marked fileC-y
yank to other buffers
tramp und sudo auf dem remote host
/ssh:<remote_node>|sudo:<remote_node>:<remote_file>