Mit dem vim eine farbige motd erstellen

Hallo zusammen!

ENDLICH! Endlich habe ich den Kniff wieder gefunden!
Ich habe auf diesem Server, auf dem auch diese Homepage gehostet ist, eine farbige motd Datei angelegt. Hierin werden neben der IP und einem kleinen ASCII - Bildchen die auf diesem Server konfigurierten Domains aufgelistet.
Damals habe ich mir nicht weiter aufgeschrieben wie das geht, hatte ich das doch nach 1-2 Minuten googlen direkt gefunden.

[caption id="attachment_415" align="alignleft" width="150" caption="Screenshot der MOTD von zoosau.de"]Screenshot der MOTD von
zoosau.de{.size-thumbnail .wp-image-415 width="150" height="150"}[/caption]

Heute laufen auf demselben Server, auf dem früher nur diese eine Domain, zoosau.de, lief schon 6.
Natürlich wollte ich die neuen 5 Domains immer auch gerne in diese Datei eintragen, jedoch fand ich auf Teufel komm raus den Kniff nicht mehr, wie das geht mit farbigem Text!
Heute bin ich der Sache endlich deutlich näher gekommen. Damit ich das nächste Mal nicht wieder umsonst Ewigkeiten suche, beschreibe ich das Vorgehen hier.

Zunächst öffnet man eine Datei, oder legt halt mit dem vim eine neue an. Will man nun ... sagen wir: Rot, blinkend und auf grünem Hintergrund schreiben, dann begibt man sich zunächst in den Insert - Modus (i) und drückt dann STRG+v , gefolgt von der "Pfeiltaste-nach-rechts"-Taste. Man sieht nun folgendes erscheinen: "\^[OC " , wobei der Teil "\^[" blau dargestellt wird (sofern Konsole und vim auf farbige Darstellung konfiguriert sind). Die letzten beiden Zeichen, das "OC" löscht man nun wieder - es geht um darum, das man die Escape-Character "\^[" erzeugt hat. Warum man nicht einfach "\^[" eintippt? Nun: Testet meine Methode und vergleicht das Ergebnis mit dem Vorgehen "\^[" nur einzutippen ;) Es wird dann halt als die Zeichen "\^[" eingefügt, nicht aber als die Kontrollzeichen. Diese werden nur als blaue "\^[" angezeigt; eigentlich stecken da ganz andere Codes hinter. Schwer zu erklären, einfach mal nach "escape sequences" googlen.

So, damit wird die Sequenz eingeleitet. Nun müssen wir eingeben, was wir darstellen wollen. Ein Blick in die Manpage von "dir_colors" gibt uns hier ein paar Möglichkeiten an die Hand. Man kann hier verschiedene Werte übergeben, welche durch ein ";" getrennt und durch ein weiteres "[" initialisiert werden. Für unser "Rote, blinkende Schrift auf grünem Grund" - Beispiel nehmen wir also "05;31;42" (05 = blinkender Text; 31 = rote Schrift im Vordergrund und 42 = Hintergrundfarbe grün). Anschließend wird ein "m" angehangen, um die Kontrollstruktur zu beenden und zu signalisieren "Jetzt kommt mein Text!". Bisher haben wir also: "\^[[05;31;42m"

Als kleines Beispiel schreibe ich nun einfach "Ich bin haesslicher, blinkender Text auf einem unmoeglichen Hintergrund!" direkt hinter das "m". Dieser Text soll also gleich in unserer sehr eigenwilligen Farbkonstellation ausgegeben werden.

Genau wie die Escapesequenz eingeleitet und aktiviert wurde, muss sie nun auch wieder beendet werden um normalen Text schreiben zu können. Sonst hätte man am Ende ja nur eine große, blinkende, häßliche Textdatei, und das wollen wir wohl nicht ;)
Hierzu bedienen wir uns wieder der Tastenkombination STRG-v, "Pfeiltaste-nach-rechts" - Taste und dem löschen der Zeichen "OC". Als nächstes folgt noch ein "[0m". Die 0 setzt den Text wieder auf seine Standardeigenschaften zurück.
Zur Überprüfung schreibe ich in diesem Beispiel noch den Text "Puh, endlich ist der Albtraum vorbei!" dahinter.

So, dann bewundern wir mal unser Werk: Abspeichern, vim verlassen und "cat Dateiname" eingeben.

Ich bin mir seeeeeehr sicher, das dieses HowTo vor inhaltlichen und fachlichen Ungenauigkeiten nur so strotzt. Ich habe jedoch bisher keine bessere Anleitung gefunden. Wer Fehler findet, kann mich gerne durch einen Kommentar korrigieren :)

Teilen per: TwitterEmail


Syntax Highlighting im vim aktivieren

Nur ein schneller Tipp für zwischendurch.

Unter Debian und Debian-artigen Linux Distributionen ist das Syntax Highlighting standardmäßig deaktiviert. Ist auch gut so für ein Serverbetriebssystem, da manche KVM Displays auf Farben nicht so gut zu sprechen sind.
Meistens ist dieses jedoch ein Feature, das einen ungemein bei der Arbeit unterstützt.

In diesem Blog, der leider nur von registrierten Usern Kommentare akzeptiert ( was mir aber zu umständlich ist ;) ), habe ich schnell gefunden, wie man es aktiviert:

Einfach in die Datei "/etc/vim/vimrc" die Option "syntax on" setzen. Bei Debian und Ubuntu existiert der Eintrag bereits, ist jedoch durch doppelte Anführungszeichen auskommentiert.
Das war's schon! :) Beim nächsten Start von vim ist das Syntax Highlighting aktiviert.

Achtung: Auf diesem Wege gillt es global für alle User!
Userspezifisch kann man dasselbe erreichen, indem man stattdessen die Datei ".vimrc" im jeweiligen Home-Dir des Users wie oben beschrieben editiert.

Teilen per: TwitterEmail


Automatisches einrücken im Editor vim

Der besonders unter Linux sehr weit verbreitete Texteditor vim bringt in der Standardkonfiguration eine Eigenschaft mit sich, die mich persönlich mehr stört als nutzt:

Die Option autoindent.
Diese sorgt dafür, das eine Einrückung am Anfang einer Zeile, durch Leerzeichen oder Tabs in der folgenden Zeile, nach drücken der Enter Taste, ebenfalls eingerückt wird.
Das klingt zunächst mal sehr praktisch, da man so sehr einfach eine Formatierung beibehalten kann. Sehr nervig wird sie jedoch, wenn man mit Einrückungen versehene Textteile per Copy&Paste im vim einfügt. Es werden dann nämlich, zusätzlich zu den Einrückungen im kopierten Text, vom vim Einrückungen der vorigen Zeile eingefügt.

Das sieht dann sehr unordentlich aus und man muß alles manuell wieder entfernen.

Daher stelle ich diese meistens lieber ab.

Das geht entweder, indem man die Einstellung in der Konfigurationsdatei des Editors setzt (unter Debian /etc/vim/vimrc) oder im Editor selbst.

In der Konfigurationsdatei fügt man einfach folgende Zeile ein:

set noautoindent

Im Editor selbst muss man sich im Kommandomodus befinden. Die Einstellung setzt man durch:

:set noautoindent

Setzt man sie im Editor selbst, wird die Einstellung jedoch nicht gespeichert und gilt nur für die aktuell ausgeführte Editorinstanz.

Gefunden habe ich diesen Hinweis auf dieser Seite.

Teilen per: TwitterEmail