Zum Inhalt. Zum Hauptmenü. Zum Untermenü.

Domaincheck! Internet-Adressen einrichten und verwalten.
Juli 2008
Inhalt der Ausgabe
SILVER erscheint vierteljährlich auch in gedruckter Form. Bestellen Sie ein kostenloses Abo per E-Mail an:
silver@sil.at
Gerfried Fuchs über Investition und Ersparnis von Arbeitszeit.
einen groszteil der arbeit am computer verbringt man dabei, texte einzuklopfen – sei es e-mails zu schreiben, software zu programmieren, oder aber dokumente zu verfassen. die wahl des richtigen editors dafuer kann die dazu notwendige zeit sehr stark reduzieren.
Q: und ... Vim[1] ist der richtige?
A: fuer mich schon. ich bin aber nicht so vermessen zu behaupten, dass er fuer jeden der richtige waere. trotzdem, oder aber gerade deswegen ist es notwendig, sich die zeit zu nehmen, sich zu informieren, um sich ein eigenes urteil bilden zu koennen.
Q: zeit nehmen? waren wir nicht bei effizienz?
A: ja – und gerade deshalb ist es unumgaenglich, sich mit den werkzeugen der taeglichen arbeit eingehender zu beschaeftigen. jegliche zeit, die man ins lernen eines maechtigen tools investiert, erhaelt man relativ rasch im taeglichen einsatz wieder retour. um den artikel selbst ebenso effizient zu gestalten, setze ich jedoch die grundlegende bedienung voraus, wie sie im "vimtutor"[2] erklaert wird. falls eine erwaehnte einstellung, ein befehl oder sonst etwas unklar ist, kann jederzeit in der vim internen hilfe nachgesehen werden, indem :help gefolgt vom gewuenschten eingegeben wird (z.b. :help :help). fangen wir mit ein paar netten kleinigkeiten an: einstellungen ueber ~/.vimrc. hier ein paar dinge, die recht nett sind.
#v+
set ruler
set showcmd
syntax on
filetype plugin on
#v-
"ruler" ist dafuer da, in der status-zeile immer die koordinaten in der datei anzuzeigen – bei groeszeren dateien unverzichtbar. "showcmd" hingegen zeigt bei kommandos, die aus mehreren tastendruecken bestehen (wie z.b. jene, die eine bewegung zum abschluss benoetigen), das bisher getippte.
"syntax on" dreht das syntax highlighting auf, was bedeutet, dass gewisse strukturen farblich hervorgehoben sind. damit ist es moeglich, die struktur eines dokuments rascher zu ueberblicken.
syntax dateien gibt es fuer nahezu jede moegliche (und auch manche unmoegliche) dateistruktur, wie so ziemlich alle programmiersprachen, aber auch viele konfigurationsdateien sowie e-mail-text oder log-dateien.
filetype plugins ermoeglichen es, abhaengig vom dateityp besondere einstellungen zu setzen oder auch funktionen zu definieren. man legt eine datei mit den gewuenschten optionen in ~/.vim/ftplugin/ an, in der man die gewuenschten einstellungen
anlegt:
#v+
$> cat ~/.vim/ftplugin/mail.vim
setlocal textwidth=72
$> cat ~/.vim/ftplugin/html.vim
setlocal shiftwidth=2
setlocal softtabstop=2
setlocal expandtab
setlocal autoindent
#vin
e-mails mag ich die zeilenlaenge auf 72 zeichen beschraenkt haben, dann sollen sie umgebrochen werden. in html-dateien sollen dafuer einrueckungen zwei zeichen breit sein, keine tabs vorkommen und eine automatische einrueckung auf die vorige
zeile passieren.
diese beispiele lassen sich natuerlich nach belieben erweitern und auf andere dateitypen ausweiten. in welchem filetype man sich gerade befindet und wie die datei daher heiszen soll, laesst sich ganz einfach durch ein ":set ft?" herausfinden. etwas, das auch haeufiger benoetigt wird: groeszere code-bloecke auskommentieren, vor kopierte absaetze ein zeichen als quote einfuegen, oder sie herumzuschieben, um z.b. zwei spalten in textbasierten tabellen auszutauschen. dazu bietet vim den visuellen blockmodus. zwei kurze beispiele:
#v+
das problem hat XYZ schon mal ganz gut erklaert:
1. blabla fasel dies und das
2. und noch ein bischen mehr
3. vielleicht wird es ja mal
4. was verwertbares ...
#vwenn
man vor diesen text jetzt etwas einfuegen will, geht man aufs "blabla", drueckt ctrl-v, bewegt sich zum "was" hinunter, drueckt dann I, um vor dem visuellen block etwas einzufuegen, tippt dieses (z.b. ein "| ", und drueckt dann escape – es wird dann automatisch vor alle zeilen eingefuegt:
#v+
das problem hat XYZ schon mal ganz gut erklaert:
1. | blabla fasel dies und das
2. | und noch ein bischen mehr
3. | vielleicht wird es ja mal
4. | was verwertbares ...
#vum
einen visuellen block zu verschieben, markiert man ihn, drueckt dann x fuer ausschneiden und an der gewuenschten position p fuers wieder einfuegen. damit laesst sich z.b. die spalte mit den pipes und den zahlen recht simpel austauschen.
ein weiteres sehr angenehmes feature ist es, groeszere bloecke zusammenfalten zu koennen und nur als einzige zeile anzeigen zu lassen. das kann auf verschiedenste arten passieren, die wohl einfachste variante fuer dateien, die man oefters wieder oeffnet, ist die einstellung foldmethod=marker: wenn man dann in eine zeile die zeichenfolge {{{ als anfangsmarkierung eines blocks setzt und in einer spaeteren zeile eine endmarkierung verwendet, die entsprechend aus der zeichenfolge }}} besteht, bewirkt dies, dass der abschnitt zusammengefaltet wird:
#v+
oeffnet, ist die einstellung foldmethod=marker: wenn man dann
+-- 3 Zeilen: in eine zeile die zeichenfolge als anfangsmarkierung
dass dieser abschnitt zusammengefaltet wird:
#v
mittels zo kann man falten oeffnen, zc schlieszt sie wieder, und zf kann direkt neue generieren (gegebenenfalls die option commentstring wie gewuenscht anpassen).
Q: hmm, und wenn ich mir den editor jetzt soweit hingetrimmt hab – muss ich die konfiguration dann kreuz und quer kopieren??
A: nein, absolut nicht. Vim unterstuetzt ein editieren uebers netz: mit z.b. "vim scp://hostname/pfad/datei" kann man per scp eine datei auf einem entfernten rechner editieren (der pfad ist relativ zum HOME verzeichnis zu sehen – gegebenenfalls einen zweiten / nach dem hostname eingeben) und anschlieszend wieder zurueckschreiben. dasselbe funktioniert auch mit ftp:// sowie auch http:// – wobei hier ein zurueckschreiben nicht moeglich ist.
Q: und wenn ich mir mit dem dateinamen nicht sicher bin?
A: dann laesst man ihn einfach weg und greift auf dasselbe angenehme feature zu, das einem auch lokal zur verfuegung steht, wenn man ein verzeichnis oeffnet (so die filetype plugins aktiviert sind): der datei browser. er zeigt einem am anfang eine kurze hilfe an, darunter zuerst alle verzeichnisse und anschlieszend die dateien. man bewegt sich einfach zur gewuenschten datei, drueckt enter und hat sie editierbereit verfuegbar.
Q: fast ein wenig viel auf einmal ...
A: deswegen zum abschluss nur noch zwei angenehme kleinigkeiten: oft will man in texten einen dateinamen eingeben – aber ihn nicht umstaendlich rumkopieren. es gibt auch hier eine vervollstaendigung wie in der shell mittels tab, in vim drueckt man dazu im eingabe modus einfach ctrl-x ctrl-f und erhaelt den ersten treffer angezeigt, mit ctrl-n bzw. ctrl-p laesst es sich dann durch die optionen scrollen. die andere sache ist fast
ein wenig umgekehrt: wenn man eine datei im text referenziert hat, will man sie manchmal ebenfalls editieren. dazu genuegt es, auf den dateinamen zu gehen und gf (goto file) zu tippen, und schon ist man dort. praktisch, nicht?
Der Autor:
Gerfried Fuchs ist Mitarbeiter von Silver Server.
Mail an den Autor:
gf@sil.at