Nun rückt so langsam der Tag näher, an dem ich Bayern für ein halbes Jahr verlassen und in das schöne Baden-Württemberg ziehen werde. Heute ist auch mein vorletzter Tag bei Siemens A&D MC RD3 NCK, der Entwicklungsabteilung der Steuerungssoftware NCK. Ab Donnerstag fängt dann planmäßig mein von der Hochschule vorgeschriebenes Praktikum im Forschungs- und Entwicklungszentrum bei Porsche in Weissach an.
Ich hoffe, dass ich während des Praktikums – beispielsweise am Wochenende – ein wenig Zeit finden werde, um hier ein paar Photos und Erfahrungen niederzuschreiben. Meine Digitalkamera habe ich auf jedenfall schon mal gedanklich vorgemerkt, sie morgen einzupacken
Am Samstag habe ich noch schnell bei unserer Gemeinde in Oberasbach Briefwahl für den 18. September 2005 beantragt, so dass ich auch aus der Nahen Umgebung von Stuttgart bei der 16. Bundestagswahl teilnehmen kann.
Das Open Source Signatur-Projekt siggen steht kurz vor der Veröffentlichung. Es wird von der Version 1.27b auf der Version 2.00 (im Stable-Branch) upgedatet. Grund dafür ist eine neue Programmiersprache, mit der man seine Email-Signaturen verschlüsseln lassen kann: Die *NIX Shell!
Damit ist es mit dem neuen siggen Feature möglich, sogar sed mit einem core dump abstürzen zu lassen – man brauche gerade einmal eine Signatur mit gut 1500 Zeichen Länge generieren und ausführen zu lassen!
Um aber RFC-konforme Email Signaturen zu erstellen(!!!), empfehle ich eine max. unverschlüsselte Signaturlänge von max. 12 Zeichen!
Heute habe ich mir einmal gedacht, dass es u.U. vielleicht sinnvoll sein könnte, Sie auf ein paar gute Bookmarks und Referenzen im Internet über den OSS-Editor VIM hinzuweisen.
Eins möchte ich vorab aber noch erwähnen! Die untere Liste ist keinesfalls vollständig und wahrscheinlich sind auch die Inhalte (von denen ich mich hier ausdrücklich disdanziert habe!!!) teilweise fehlerbehaftet. Da ich über so eine große Liste keineswegs den Überblick behalten kann, bitte ich dead Links zu entschuldigen und wäre über einen kurzen Hinweis/Kommentar sehr dankbar!
Hier ein paar gute Dokumente, die auf meiner Seite gehostet sind:
Ein freies, englisches Buch, dass sehr ausführlich auf über 500 Seiten den VIM vorstellt: FILE: Vimbook (OPL) (3.7 M)
Das hier ist ein ASCII-Dokument, das einige sehr interessante Hacks darstellt. Die Beschreibung ist allerdings sehr knapp gehalten: FILE: VIM HACKS (34 K)
===== BOOKMARKS BEGIN =====
Der Editor Vi(m): Einführung, Tipps und Tricks
Bookmark: http://www.ostc.de/vi.pdf
Calmar’s Vim tips
Bookmark: http://www.calmar.ws/vim/index.php
Peter’s Vim Blogger
Bookmark: http://www.petersblog.org/taxonomy/term/10
Vim Color Editor HOW-TO (Vi Improved with syntax color highlighting)
Bookmark: http://dufo.tugraz.at/mirror/linux-html-howtos/Vim-HOWTO.html
Vim as XML Editor
Bookmark: http://www.pinkjuice.com/howto/vimxml/
The Docs
Bookmark: http://vimdoc.sourceforge.net/
The Vi IMproved Editor Web Ring
Bookmark: http://u.webring.com/hub?ring=vim
Vim Tips
Bookmark: http://vim.sourceforge.net/tips/
VI Lover’s Homepage
Bookmark: http://thomer.com/vi/vi.html
ausführliche Vim-Beschreibung bei Wikipedia (DE)
Bookmark: http://de.wikipedia.org/wiki/Vim
VIM (Vi IMproved) Tutorial
Bookmark: http://www.unb.ca/documentation/UNIX/tips/vim/
VIM Referenzkarte (DE)
Bookmark: http://www.linuxsource.de/download/vim_referenz.pdf
Vorteile des Vim
Bookmark: http://www.moolenaar.net/vim.html
Text Processing With Integrated Spell Checking and Paragraph Formatting in the Vim and Vi Editors
Bookmark: http://www.highley-recommended.com/text-processing.html
Vim und Reguläre Ausdrücke (sehr gut und umfangreich)
Bookmark: http://www.troubleshooters.com/linux/presentations/
leap_regex/toc.html
Vim for Beginners, with scripts, spell checkers, …
Bookmark: http://www.unb.ca/fredericton/science/chem/ajit/vim.htm
Another good Vim tutorial site
Bookmark: http://users.skynet.be/antoine.mechelynck/vim/
TVO: The Vim Outliner
Bookmark: http://bike-nomad.com/vim/vimoutliner.html
An Introduction to Display Editing with Vi
Bookmark: http://docs.freebsd.org/44doc/usd/12.vi/paper.html
Interview with Bill Joy
Bookmark: http://www.cs.pdx.edu/~kirkenda/joy84.html
Power Vim Usage: Tips & Tricks for Everyday Editing
Bookmark: http://www.ukuug.org/events/linux2004/programme/paper-SMyers/
Linux_2004_slides/vim_tips/index.html
===== BOOKMARKS END =====
Viel Spaß beim Schmökern durch die VIM-Informationen!
Hatten Sie schon einmal das Problem, dass Sie etwas geschrieben haben und dann schnell etwas rechnen mussten, dass Sie vielleicht nicht im Kopf machen wollten/konnten. In VIM ist das kein Problem, dann er kann rechnen (-:
Ein wieder ganz intuitives *fg* [STRG] + [r] + [=] im “insert mode” des VIM und Sie können z. B. folgendes ausrechnen lassen:
5*5+1-1*12/6+4*6-0*3
Aber im Kopf hätten Sie wahrscheinlich auch nichts anderes herausbekommen als 48!
Eine sehr gute Methode, wenn man unter Unix/Linux mehrere Konfigurationsdateien editieren muss, mehrere Emails quasi-gleichzeitig schreiben oder einfach nur mehrere Sourcecode Dateien nebeneinander offen haben will bietet VIM mit der integrierten Fensteraufteilung.
Nehmen Sie an, Sie hätten 2 Dateien “file1.txt” und “file2.txt” im Ordner /tmp/myfiles liegen. Nun möchten Sie aus “file2.txt” etwas lesen, dass Sie dann in “file1.txt” übernehmen möchten. Dazu öffnen wir zuerst einmal Beide:
# vim /tmp/myfiles/file{1,2}.txt
2 files to edit
Nun können Sie entweder mit
:file file2.txt
bzw. mit
:file file1.txt
zwischen den 2 Dateien hin- und herspringen, oder Sie splitten die 2 Dateien. Hierzu haben Sie 2 Möglichkeiten, die Fenster zu splitten! Endweder horizontal mit:
:split file1.txt
oder eben vertikal mit dem folgendem VIM-Command:
:vsplit file1.txt
Nun fragen Sie sich sicherlich, wie man zwischen den 2 gesplitteten Fenstern hin- und herschalten kann! Dies machen Sie ganz intuitiv (-; mit [STRG] + [w] + [w] (also 2 mal ein kleines ‘w’).
TIPP: Sie können das Fenster auch mehrmals splitten, nicht nur in 2 Fenster, wie das obige Beispiel zeigt!
Wenn Sie nun eins der Fenster schließen wollen, können Sie dies machen, indem Sie den Befehl
:close
in dem zu schließenden Fenster anwenden. Mit dem Schlüsselwort
nly
sagen Sie VIM, dass er nur das i. M. aktive Fenster offen behalten soll, alle anderen, offenen Fenster werden dann geschlossen.
In der Typo3-Extension ee_blog gibt es einen Fehler in der Listenansicht. Ich setze hier die Version 0.1.7 ein, der Fehler existiert aber auch in der aktuellen Version 0.1.8, dass die Vorschau auch innerhalb von HTML-Tags umgebrochen wird und so manche Browser ins Schwanken geraten.
Die Extension zählt nämlich bei der Vorschau Zeichen (z. B. 3000) ab und hängt danach ein “…” an. Geschieht dies z. B. innerhalb eines offenen Link-Tags, gibt es Probleme bei der Darstellung der Seite im Browser!
Es gibt immer wieder Menschen, die sich der in RFC1855 abgeleger Netiquette Guidelines widersetzen! Noch nicht einmal, dass sie HTML-Emails verschicken, sondern meistens fängt es bei der nicht wohlgeformten Signatur an und hört bei der Zeilenlänge auf! Die Signatur kann man noch ganz einfach mit dem Cursor am Anfang der Signatur und einem geschickten dG nach /dev/null wandern lassen.
Doch wie kann man (den Envolope ausgeschlossen) die Email im VIM im nachhinein auf max. 65 Zeichen pro Zeile reformatieren?
[CUT rfc1855.txt]
- Limit line length to fewer than 65 characters and end a line with a carriage return.
[/CUT]
Hier kann man sich dem Tool “fmt” – einem Textformatierungsprogramm (-; – bedienen. Ein einfaches
}!fmt -65
im Befehlsmodus dem VIM am Anfang der hässlichen Textzeile(n) und die Email des “Feindes” sieht schon besser aus!
Häufig muss man zwischen mehreren bestimmten Textstellen hin- und herspringen. Dafür bietet der VIM eine schöne Lösung:
Strg-O: Zur vorherigen Cursorposition zurückspringen (mehrfach)
TAB: Zur neueren Cursorposition springen (mehrfach)
Des Öfteren editiert man Texte, in denen bestimmte Worte mehrfach vorkommen und evtl. aufgrund der Länge oder Buchstabenkombination schwer fehlerfrei einzutippen sind (z.B. Variablen- oder Funktionsnamen in Programmen). Dafür bietet der VIM folgende sehr schöne Lösung:
Strg-P: Wort mit vorherigem passenden vervollständigen (mehrfach)
Strg-N: Wort mit nächstem passenden vervollständigen (mehrfach)
Ein eher exotisches Feature des VIM ist die Möglichkeit, eine Zahl unter dem Cursor zu in- bzw. dekrementieren (auch oktale/hexadezimale Zahlen):
Strg-A: Zahl unter Cursor inkrementieren (mehrfach)
Strg-X: Zahl unter Cursor dekrementieren (mehrfach)
Wie Sie vorgestern *hoffentlich* im HACK #2 gelernt haben, kann man mutt ganz einfach dazu bringen, also Editor den VIM zu nutzen. Heute wollen wir uns anschauen, wie man den improved VI beim Emails Schreiben zusätzlich als integriertes Adressbuch verwenden kann.
Legen Sie dazu eine exemplarische ASCII-Datei an, in der Sie “$NAME < $EMAIL>” von ein paar Bekannten von Ihnen eintragen und speichern Sie diese dann auf ~/.addressbook ab.
Nun öffnen Sie den VIM und stellen sich ganz banal vor, Sie würden jetzt eine Email an Georg Merz schreiben wollen. Nur was machen, wenn Sie jetzt den Envelope-Teil “To:” ausfüllen wollen? Ganz einfach! Sie bewegen (-: den Cursor nach das “To:” und tippen nach einem [ESC] folgendes ein:
:r!cat ~/.addressbook | grep Georg
Danach brauchen Sie den als neue Zeile eingefügten Datensatz nur noch eine Zeile höher rutschen zu lassen – dies kann man z. B. im Befehlsmodus mit den Tasten kJ machen – und schon haben Sie einen wohlgeformten Empfänger-Envelope-Eintrag!
Heute sehen wir uns einmal die Integration von siggen in das Email-Programm mutt, in Kombination mit VIM genauer an. siggen ist ein Signatur-Projekt, das ich letztes Jahr ins Leben gerufen habe. Es ist ein hoch integrierbares Tool zur kryptischen Verschlüsselung von Email-Signaturen in ANSI C89 oder Brainf*ck, dass sich ohne viel Mühe in viele Mail-Programme integrieren lässt, wie beispielsweise das gerade erwähnte Programm Mutt oder Pine in Kombination mit emacs, VIM, oder was auch immer (-;
Zunächst einmal wollen wir uns einen Überblick über siggen verschaffen, dazu schauen wir uns nach der Installation die Online-Hilfe an, die wir durch einfaches Aufrufen von siggen erhalten:
# siggen
TIPP: Ein `man siggen` oder `siggen -h` liefert noch mehr Informationen. Zur Installation von siggen darf ich noch darauf hinweisen, dass u. U. das Makefile vor dem Kompilieren der Sourcen angepasst werden muss (CC, Verzeichnisse) – aber ein Configure-Skript wäre hier zu konfortabel gewesen *fg*.
Gut, das (bzgl. der Online-Hilfe) ist doch relativ einfach zu bedienen – vorausgesetzt, Sie haben sich diese gerade durchgelesen! Angenommen wir wollen an jede Email folgende Signatur anhängen (nur “verschlüsselt” mit ANSI C89):
–
Max Mustermann
So versuchen wir es doch einfach mal mit einem
# siggen -m -n “Max Mustermann”
und erhalten folgenden Output:
–
int main(){int O=0,s[]={0x9a,0xc2,0xf0,0100,0x9a,0xea,0xe6,0xe8\
,0xca,0xe4,0xda,0xc2,0xdc,0×0};while(O<14){(s[O]==0)?printf(“%c\
\n”,(110< <2)>>2):printf(“%c”,s[O]>>1);++O;}return s[--O];}
Evtl. könnte man mit der Flag “-c [COMMENT]” noch einen Kommentar einfügen, um den Quellcode blockweise formatiert zu bekommen. An dieser Stelle sei auch darauf hingewiesen, dass siggen nicht nur C “sprechen” kann, sondern auch
Brainf*ck, was Sie durch ein voranstellen von “-t bf” erreichen können.
Nun wollen wir noch
mutt so einstellen, dass man seinem Emails mit VIM verfassen (/lesen) kann. Dazu öffnet man die Datei ~/.muttrc in seinem Home-Directory:
# vim ~/.muttrc
Hier sucht man sich die folgende Zeile aus und modifiziert sie dementsprechend:
Also mehr als 65 Zeichen pro Zeile sind nicht RFC1855-konform und Syntax-Highlighting ist natürlich ein Muss
Um dem Rest der Welt zu sagen, mit was für einem Editor man seine Emails verfasst bzw. liest, kann man noch einen Header-Eintrag in jeder Email mitschicken. Dazu muss man in ~/.muttrc noch folgendes ergänzen:
my_hdr X-editor: VIM – Vi IMproved 6.3 (http://www.vim.org)
So, nun kann man in Mutt seine Emails mit seinem Lieblings-Editor VIM schreiben ^^
Jetzt sehen wir uns doch einmal an, wie man siggen in mutt integrieren kann. Dazu ergänzen wir einfach noch die ~/.muttrc Datei in unserem Home-Verzeichnis um diese 2 Zeilen:
set signature=”siggen -c bar -l 65 foo”|
my_hdr X-siggen: siggen 1.27b (http://siggen.sf.net)
Und schon ist es eingebunden! Will man siggen etwas dynamischer gestalten, kann natürlich auch auf Variablen-Substitution zurückgreifen, wie z. B.
set signature=’siggen -c “current date/time” “`date`”‘|
um immer die aktuelle Zeit und das akutelle Datum zu “verschlüsseln”. Ein bisschen Ausprobieren ist hier allerdings angesagt…