Dieses Handbuch wird mit freundlicher Genehmigung von Sebastian Hetze auf den Servern der Linux Information Systems AG gehosted.

next up previous contents index
Next: elvrec Up: Von GNU's, Muscheln und Previous: egrep

Subsections


elvis

     

Funktion:

elvis ist eine Weiterentwicklung, des Standard Unix Editors ex/vi.

Syntax:

elvis [-reviR] [-t tag] [-m [Datei]] [-w Fenstergröße] [-c Befehl] [+Befehl]

Beschreibung:

elvis bietet sowohl im `visual mode', als auch im `colon mode' nahezu alle Möglichkeiten des `Vorbilds' ex/vi.

elvis kann unter verschiedenen Namen aufgerufen werden. Wird elvis als ,,vi`` aufgerufen, so verhält er sich wie elvis. Unter dem Namen ,,view`` läßt elvis keine Änderungen an der Datei zu und schützt sie so vor versehentlichem Überschreiben. Als ,,ex`` startet elvis im ,,colon mode`` (wie -e, und als ,,input`` aufgerufen, befindet man sich sofort im ,,input mode``, als sei die Option ,,-i`` gesetzt.

Wie ex/vi hält auch elvis den Hauptteil des Textes in einer temporären Datei und nicht im RAM. Dadurch können auch Dateien editiert werden, die wegen ihrer Größe nicht im Speicher gehalten werden können. Im Falle eines Systemabsturzes besteht so die Möglichkeit, den Inhalt des Arbeitspuffers durch das Hilfsprogramm elvrec wiederherzustellen.

elvis ist ein Public-Domain Programm und unterliegt keinen Beschränkungen in der Verwendung.

Optionen:

-r
Bei dem originalen ex/vi bedeutet die ,,-r`` Option, daß ein durch einen Absturz oder Stromausfall unterbrochener Editiervorgang wiederhergestellt werden soll. elvis verwendet hierfür ein separates Programm namens elvrec und gibt deshalb nur einen Hinweis auf dieses Programm aus.

-R
Diese Option setzt das readonly Flag, so daß eine Datei nicht versehentlich überschrieben werden kann.

-t Tagname
elvis positioniert den Cursor nach dem Starten auf den angegebenen Referenzpunkt Tagname.

-m [Datei]
elvis durchsucht die angegebene Datei nach Compilerfehlermeldungen, und plaziert den Cursor in der Datei auf der Zeile, in der der Fehler aufgetreten ist. Wird keine Datei angegeben, so sucht elvis in der Datei ,,errlist``.

-e
elvis startet im ,,colon mode``.

-v
elvis startet im ,,visual command mode``.

-i
elvis startet im ,,input mode``.

-w Fenstergröße
Setzt die ,,window`` Option auf den Wert von Fenstergröße.

-c Befehl oder +Befehl
Nachdem elvis die erste Datei geladen hat, führt elvis Befehl als ,,ex`` Kommando aus. Ein typisches Beispiel hierfür ist ,,elvis +75 Datei``, um den Cursor automatisch auf Zeile 75 der Datei zu plazieren.

Überblick

Die Benutzerschnittstelle von elvis ist etwas gewöhnungsbedürftig. Es gibt zwei wichtige Kommandomodi und einige Eingabemodi. Jeder Kommandomodus hat einen Befehl, um in den jeweils anderen umzuschalten. Der meistverwendete Modus ist vermutlich der `visual command mode'. In diesem Modus befindet sich elvis normalerweise nach dem Starten.

Im `visual command mode' dient der gesamte Bildschirm der Textdarstellung. Jeder Tastendruck wird als Teil eines Befehls interpretiert. Eingegebener Text wird nicht in die Datei eingefügt. Um Text einzufügen, muß erst ein `Text einfügen' Kommando gegeben werden.

Der `colon mode' unterscheidet sich vom `visual mode' dadurch, daß in der letzten Zeile ein `:' angezeigt wird. elvis erwartet dann die Eingabe eines Befehls, gefolgt von einem RETURN. Im `colon mode' erwartet elvis andere Kommandos als im `visual command mode'.

Der `visual mode'

`Visual mode' Befehle

Die meisten `visual command mode' Befehle sind nur einen Tastendruck lang. Nachfolgende Tabelle listet die möglichen Befehle und ihre Optionen auf.

Zusätzlich zu den hier aufgeführten Kommandos interpretiert elvis die Cursortasten als entsprechende Positionierungsbefehle, sofern der entsprechende termcap-Eintrag korrekt ist. Hier treten gelegentlich Probleme auf. Gleiches gilt für die BILDAUF- und BILDAB-Tasten. Im `colon mode' stellt elvis noch einen Befehl (:map) zur Verfügung, der es ermöglicht noch andere Tasten, wie z. B. die Funktionstasten, mit Kommandos zu belegen.

Noch ein Tip: der `visual command mode' ist dem `text input mode' sehr ähnlich. Um herauszufinden in welchem Modus man sich gerade befindet, genügt es, einmal ESC zu drücken. Befindet man sich im `visual command mode', piepst elvis einmal. Piepst elvis nicht, so hat man sich im `input mode' befunden, und elvis ist in den `visual command mode' zurückgekehrt, d. h. nach einem ESC befindet elvis sich immer im `visual command mode'.

Anzahl
Vielen Kommandos kann ein numerischer Parameter vorangestellt werden. Er besteht aus einer Folge von Ziffern, die als Dezimalzahl interpretiert werden. Dieser Parameter ist immer optional. Sein Standardwert ist meistens 1.
Taste
Einige Kommandos erfordern zwei Tastendrücke. Der erste ist immer der Befehl, der zweite ein Parameter zum Befehl. So bedeutet ma beispielsweise, daß an die aktuelle Cursorposition die Marke a gesetzt wird.
Bereich
Kommandos, die auf einen Textbereich wirken, benötigen zusätzlich zur aktuellen Cursorposition, die eine Grenze eines Bereichs angibt, eine zweite. elvis kennt drei Möglichkeiten, diese zweite Grenze anzugeben. Die erste ist, dem Befehl ein Bewegungskommando nachzustellen. So löscht dw ein Wort, und sowohl 3dw als auch d3w löschen jeweils drei Wörter. Als zweite Möglichkeit kann man den Befehl zweimal angeben. Er wirkt dann auf die ganze Zeile. Die dritte ist, den Cursor auf ein Ende des Bereichs zu setzen, v oder V einzugeben, den Cursor an das andere Ende des Bereichs zu bewegen und daraufhin den gewünschten Befehl einzugeben.
eing
Bei einigen Kommandos ist es möglich, interaktiv Text einzugeben. Es erscheint entweder ein Prompt, oder elvis schaltet in den sog. `input mode' (s. u.).
Text
Bei Kommandos, die einen Parameter Text erwarten, kann der gewünschte Text in der letzten Bildschirmzeile interaktiv eingegeben werden. Die Texteingabe wird mit RETURN abgeschlossen.
BEW
Diese Kommandos bewegen den Cursor, und können einem Befehl übergeben werden, der einen Bereich-Parameter erwartet.
EDIT
Diese Kommandos modifizieren Text und können mit `.' wiederholt werden.
EXT
Diese Befehle sind Erweiterungen von elvis, die bei `ex/vi' nicht zur Verfügung stehen.

Kommandos zum Positionieren des Cursors:

  Befehl   Beschreibung

Anzahl & h & & Cursor rechts Anzahl Spalten (BEW)

Anzahl & ^H & & Cursor rechts (wie h) Anzahl Spalten (BEW)

Anzahl & l & & Cursor links Anzahl Spalten (BEW)

Anzahl & SPC & & Cursor links Anzahl Spalten (wie l) (BEW)

Anzahl & ^X & & Cursor zur Spalte Anzahl (BEW) (ERW)

Anzahl & | & & Cursor zur Spalte Anzahl (BEW)

Anzahl & t & Taste & Cursor nach rechts vor das Zeichen Taste (BEW)

Anzahl & f & Taste & Cursor nach rechts auf das Zeichen Taste (BEW)

Anzahl & T & Taste & Cursor nach links vor das Zeichen Taste (BEW)

Anzahl & F & Taste & Cursor nach links auf das Zeichen Taste (BEW)

Anzahl & j & & Cursor abwärts Anzahl Zeilen (BEW)

Anzahl & ^J & & Cursor abwärts (wie j) Anzahl Zeilen (BEW)

Anzahl & ^N & & Cursor abwärts Anzahl Zeilen (BEW)

Anzahl & k & & Cursor aufwärts Anzahl Zeilen (BEW)

Anzahl & ^P & & Cursor aufwärts Anzahl Zeilen (BEW)

Anzahl & w & & Cursor rechts Anzahl Wörter (BEW)

Anzahl & W & & Cursor rechts Anzahl Wörter (BEW)

Anzahl & b & & Cursor links Anzahl Wörter (BEW)

Anzahl & B & & Cursor links Anzahl Wörter (BEW)

Anzahl & e & & Cursor zum Wortende Anzahl Wörter (BEW)

Anzahl & E & & Cursor zum Wortende Anzahl Wörter (BEW)

& ^ & & Cursor zum Zeilenanfang (BEW)

& 0 & & Cursor zum Zeilenanfang, wenn nicht Teil einer Wiederholungsangabe

Anzahl & _ & & Cursor zum Zeilenanfang oder Anzahl Zeilen abwärts (BEW)

& $ & & Cursor zum Zeilenende (BEW)

Anzahl & ^M & & Cursor abwärts zum Zeilenanfang Anzahl Zeilen (BEW)

Anzahl & + & & Cursor abwärts zum Zeilenanfang Anzahl Zeilen (BEW)

Anzahl & - & & Cursor aufwärts zum Zeilenanfang Anzahl Zeilen (BEW)

Anzahl & ) & & Cursor Anzahl Sätze vorwärts (BEW)

Anzahl & ( & & Cursor Anzahl Sätze zurück (BEW)

Anzahl & } & & Cursor Anzahl Absätze vorwärts (BEW)

Anzahl & { & & Cursor Anzahl Absätze zurück (BEW)

Anzahl & ^D & & bewegt den Cursor Richtung Dateiende um Anzahl Zeilen (Standard: 1/2 Bildschirmseite)

Anzahl & ^U & & bewegt den Cursor Richtung Dateianfang um Anzahl Zeilen (Standard: 1/2 Bildschirmseite)

& ^F & & bewegt den Cursor seitenweise zum Dateiende (BEW)

& ^B & & bewegt den Cursor seitenweise zum Dateianfang (BEW
)

Anzahl & ^E & & scrollt in Richtung Dateiende Anzahl Zeilen

Anzahl & ^Y & & scrollt in Richtung Dateiende Anzahl Zeilen

& ` & Taste & Cursor zu dem mit Taste markierten Zeichen (BEW)

& ' & Taste & Cursor zu der mit Taste markierten Zeile (BEW)

Anzahl &G & & Cursor zur Zeile Anzahl (Standard: zur letzten Zeile) (BEW)

Anzahl & H & & Cursor zur Anzahl-ten Bildschirmzeile (Standard: oberste Zeile) (BEW)

& M & & positioniert den Cursor auf den Anfang der mittleren Bildschirmzeile (BEW)

Anzahl & L & & positioniert den Cursor auf den Anfang der letzten Bildschirmzeile (BEW)

& z & Taste & bewegt die aktuelle Zeile zum Anfang(+) Ende(-) oder zur Mitte(.) des Bildschirms (BEW)

Kommandos zum Ändern von Text:

  Befehl   Beschreibung
  d Bereich löscht den mit Bereich angegebenen Text (EDIT)
  D   löscht den Text bis Zeilenende (EDIT)
Anzahl x   löscht das Zeichen, auf dem sich der Cursor befindet (EDIT)
Anzahl X   löscht Anzahl Zeichen links vom Cursor (EDIT)
  > Bereich schiebt den Text nach rechts (EDIT)
  < Bereich schiebt den Text nach links (EDIT)
Anzahl i eing fügt Text vor dem Cursor ein (EDIT)
Anzahl a eing fügt Text hinter dem Cursor ein (EDIT)
Anzahl I eing fügt Text am Zeilenanfang ein (EDIT)
Anzahl A eing hängt Text an das Zeilenende an (EDIT)
Anzahl o eing eröffnet unter der aktuellen Zeile eine neue und fügt Text ein (EDIT)
Anzahl O eing eröffnet über der aktuellen Zeile Anzahl neue und fügt Text ein (EDIT)
  R eing überschreibt vorhandenen Text mit eing (EDIT)
Anzahl r Taste ersetzt Anzahl Zeichen durch Taste (EDIT)
Anzahl s eing ersetzt Anzahl Zeichen durch eing (EDIT)
  c Bereich ändert den Text im Bereich Bereich (EDIT)
  C eing ändert den Text bis Zeilenende in eing (EDIT)
Anzahl S eing ändert Anzahl Zeilen (wie Anzahl cc) (EDIT)
Anzahl i eing fügt Text vor dem Cursor ein (EDIT)
Anzahl a eing fügt Text hinter dem Cursor ein (EDIT)
Anzahl I eing fügt Text am Zeilenanfang ein (EDIT)
Anzahl A eing hängt Text an das Zeilenende an (EDIT)
  \ Bereich öffnet ein Pop-Up Menü zum Ändern von Text (ERW)
  u   nimmt das letzte EDIT Kommando zurück
  U   nimmt alle letzten Änderungen der momentanen Zeile zurück
Anzahl J   hängt die nachfolgenden Anzahl Zeilen an die momentane an (EDIT)
       

Arbeiten mit Puffern und Marken:

  Befehl   Beschreibung

& y & Bereich & kopiert den mit Bereich angegebenen Text in einen Puffer

Anzahl & Y & & kopiert die aktuelle und Anzahl weitere Zeilen in einen Puffer

& `` & Taste & legt fest, welcher Zwischenpuffer als nächstes verwendet wird

& p & & fügt ausgeschnittenen Text hinter dem Cursor ein (EDIT)

& P & & fügt ausgeschnittenen Text vor dem Cursor ein (EDIT)

& @ & Taste & interpretiert den Inhalt eines Zwischenspeichers als `vi' Befehle und führt sie aus

& m & Taste & markiert eine Zeile oder ein Zeichen

& v & & setzt den Anfang einer Markierung für c, d, y, <, >, !, \ (ERW)

& V & & setzt den Anfang einer Zeilenmarkierung für c, d, y, <, >, !,\ (ERW)

Kommandos zum Suchen nach Ausdrücken und Wörtern:

  Befehl   Beschreibung

& ^A & & sucht nach dem nächsten Vorkommen des Wortes, auf dem der Cursor steht (BEW) (ERW)

Anzahl & % & & plaziert den Cursor auf die zugehörige ( ) { } [ ], oder plaziert den Cursor auf Anzahl Prozent der Datei (BEW) (ERW)

& / & Text & sucht vorwärts nach einem regulären Ausdruck Text (BEW)

& ? & Text & sucht rückwärts nach dem regulären Ausdruck Text (BEW)

Wiederholungs Kommandos:

Anzahl & . & & wiederholt das vorhergehende EDIT Kommando

& n & & wiederholt das letzte Suchen (BEW)

& N & & wiederholt das letzte Suchen in umgekehrter Richtung (BEW)

Anzahl & ; & & wiederholt das vorhergehende f, F, t, T Kommando (BEW)

Anzahl & , & & wiederholt das vorhergehende f, F, t, T Kommando in umgekehrter Richtung (BEW)

Anzahl & & & & wiederholt den letzten :s// Befehl an der momentanen Position (EDIT)

Sonstige Kommandos:

  Befehl   Beschreibung

& ^G & & zeigt den Dateistatus und die momentane Zeilennummer

& Z & Z & speichert die Datei und beendet elvis

& ^L & & erneuert den Bildschirm (wie ^R)

& ^R & & erneuert den Bildschirm (wie ^L)

& ! & Bereich & führt die selektierten Zeilen einem externen Filter zu, der nach dem Kommando angegeben werden muß

& = & Bereich & formatiert Bereich neu

& ^^ & & zur vorherigen Datei

Anzahl & # & + & erhöht eine Zahl (EDIT) (ERW)

& : & Text & führt ein einzelnes `ex' Kommando aus

& Q & & schaltet in den `ex' Modus

& * & & bewegt den Cursor zum nächsten Fehler in der Fehlerliste (ERW)

& K & & dient in Verbindung mit dem Programm ctags dazu, Schlüsselworte nachzuschlagen

& ^] & & wenn sich der Cursor auf einem tag-Namen befindet, gehe dorthin

Eingabemodi

Im `visual mode' läßt sich Text nicht eingeben, sondern es muß erst in einen sog. `input mode' geschaltet werden. Dies geschieht mit den Befehlen A, C, I, O, R, S, a, i, o, s. Die S, s, C, c Kommandos setzen zeitweilig ein `$' an das Ende des Textbereiches, auf den sie wirken. Im `input mode' werden alle Zeichen mit Ausnahme der folgenden in den Text eingefügt.

Befehl & Funktion
^A & fügt eine Kopie der letzten Texteingabe ein
^D & löscht ein Einrückungszeichen
^H & löscht das Zeichen vor dem Cursor
^L & baut den Bildschirm neu auf
^M & (Wagenrücklauf) fügt eine neue Zeile ein (^J, Zeilenvorschub)
^O & führt den nächsten Tastendruck als `visual mode' Befehl aus (eingeschränkt)
^P & fügt den Inhalt des Zwischenpuffers ein
^R & wie ^L
^T & fügt ein Einrückungszeichen ein
^U & löscht alle eingegebenen Zeichen bis zum Zeilenanfang
^V & fügt den folgenden Tastendruck ein, auch wenn er eine Sonderbedeutung hat
^W & löscht alle eingegebenen Zeichen bis zum Wortanfang
^Z^Z & speichert die Datei und beendet elvis
^[ & (ESCAPE) schaltet in den `visual command mode' zurück

Auf einigen Systemen kann mit ^S und ^Q die Bildschirmausgabe angehalten und wieder gestartet, oder mit ^C elvis abgebrochen werden. ^@ (das NULL Zeichen) kann nicht in den Text eingefügt werden.

Der `visual mode' Befehl R schalten in den sog. `replace mode'. In diesem Modus werden vorhandene Zeichen durch die eingegebenen ersetzt. Ist das Zeilenende erreicht, werden die folgenden Eingaben an die Zeile angefügt.

Die Cursortasten in den Eingabemodi

Im Gegensatz zu ex/vi ist es bei elvis möglich, in den Eingabemodi die Cursortasten zu verwenden. Desweiteren funktionieren auch die BILDAUF, BILDAB, POS1 und ENDE Tasten. Die ENTF Taste löscht ein einzelnes Zeichen im `input mode' und die EINFG Taste schaltet zwischen `input mode' und `replace mode' um. Der Hauptvorteil dabei ist, daß sich elvis, solange man sich im `input mode' befindet, fast wie jeder normale Editor verhält. Bei fast allen anderen Editoren befindet sich der Benutzer immer im `input' oder `replace mode' und kann die Cursortasten jederzeit verwenden. Zusammen mit der ^Z ^Z Befehlsfolge braucht man für einfache Änderungen nie in den `visual command mode' zu schalten. Leider scheint elvis bezüglich der Funktion dieser Sondertasten, hohe Ansprüche an die Eintragungen in der Datei /etc/termcap zu stellen. Deshalb bedarf es auf vielen Systemen einer Anpassung dieser Datei.

Digraphs

Ein Digraph ist ein Zeichen, das aus zwei anderen zusammengesetzt ist. elvis unterstützt Digraphs als Möglichkeit nicht-ASCII Zeichen einzugeben. So sollte z. B. ein Apostroph und ein `e' als ein é angezeigt und gespeichert werden.

Bedauerlicherweise existiert kein Standard für erweiterte ASCII-Zeichen. elvis kann so übersetzt werden, daß er entweder den PC-, den ISO-LATIN1-Zeichensatz, der vom X11-Window System verwendet wird, oder keinen von beiden unterstützt. Die Digraph-Tabelle kann mit dem `colon mode' Befehl :digraph angezeigt und verändert werden. Bevor nicht das Kommando :set digraph eingegeben wurde, erkennt elvis Digraphs nicht. Um ein Digraph einzugeben, muß zuerst das eine Zeichen, dann ^ H (BACKSPACE), dann das andere Zeichen eingegeben werden. elvis ersetzt dann das letzte Zeichen durch das zusammengesetzte.

Abkürzungen

elvis kann Abkürzungen erweitern. Mit dem `colon mode' Kommando :abbr kann eine Abkürzung definiert werden. Wird dann im `input mode' die Abkürzung eingegeben, erweitert sie elvis sofort auf den vollen Ausdruck. elvis führt die Erweiterung durch, sobald das erste nicht alphanumerische Zeichen eingegeben wird. Um die Ersetzung zu verhindern, kann vor dem ersten nicht alphanumerischen Zeichen ^V eingegeben werden.

Automatisches Einrücken

Wird mit der Option :set autoindent das automatische Einrücken eingeschaltet, fügt elvis vor jedem Zeilenanfang automatisch soviel Leerraum ein, wie in der vorangegangenen Zeile verwendet wurde. Der Leerraum am Zeilenanfang läßt sich mit ^T vergrößern und mit ^D verkleinern. Wird die Option :set noautotab verwendet, fügt elvis statt Tabulatorzeichen Leerzeichen ein. Der `auto indent' Modus von elvis ist mit dem von ex/vi nicht 100%ig identisch. 0^D und ^^D funktionieren nicht, ^U löscht den gesamten Leerraum, und in einigen Situationen fügt elvis weniger oder mehr Leerraum ein, als ex/vi.

Der `colon mode'

`Colon mode' Befehle

Zeilen Befehl Argumente

& ab[br] & [Kurzform] [erweiterteForm]

[Zeile] & a[ppend][!] &

& ar[gs] & [Dateien]

& cc & [Dateien]

& cd[!] & [Verzeichnis]

[Zeile][,Zeile] & c[hange] &

& chd[ir][!] & [Verzeichnis]

[Zeile][,Zeile] & co[py] & Zeile

& col[or] & [textart] [[bright] Farbe] [on Farbe]

[Zeile][,Zeile] & d[elete] & [x]

& dig[raph][!] & [XX [Y]]

& e[dit][!] & [Datei]

& er[rlist][!] & [Fehlerdatei]

& f[ile] & [Datei]

[Zeile][,Zeile] & g[lobal] & /regAusdruck/Befehl

[Zeile] & i[nsert] &

[Zeile][,Zeile] & j[oin][!] &

[Zeile][,Zeile] & l[ist] &

& mak[e] & [Ziel]

& map[!] & Taste   soll_übersetzt_werden_zu

[Zeile] & ma[rk] & x

& mk[exrc] &

[Zeile][,Zeile] & m[ove] & Zeile

& n[ext][!] & [Dateien]

& N[ext][!] &

[Zeile][,Zeile] & nu[mber] &

[Zeile][,Zeile] & p[rint] &

[Zeile] & pu[t] & x

& q[uit][!] &

[Zeile] & r[ead] & Datei

& rew[ind][!] &

& se[t] & [Option]

& so[urce] & [Datei]

[Zeile][,Zeile] s[ubstitute] / regAusdruck/Ersatz/[p][g][c]
  ta[g][!] Tagname
  una[bbr] [Abkürzung]
  u[ndo]  
  unm[ap][!] Taste
  ve[rsion]  
[Zeile][,Zeile] v[global] / regAusdruck/Befehl
  vi[sual] Dateiname
  wq  
[Zeile][,Zeile] w[rite][!] [[>>]Datei]
  x[it][!]  
[Zeile][,Zeile] y[ank] x
[Zeile][,Zeile] ! externerBefehl
[Zeile][,Zeile] <  
[Zeile][,Zeile] =  
[Zeile][,Zeile] >  
[Zeile][,Zeile] &  
  @ x
Um `colon mode' Kommandos zu verwenden, muß vom `visual mode' in den `colon mode' umgeschaltet werden. Dies geschieht mit `:' für ein Kommando und mit Q bis zum nächsten :vi Kommando.    

Zeilenangaben

Zeilenangaben sind immer optional. Die erste Zeilenangabe wird normalerweise als die momentane Zeile angenommen, die zweite wird gleich der ersten gesetzt. Ausnahmen hiervon sind die Befehle :write; :global und :vglobal, die sich, wenn nicht anders angegeben, auf den gesamten Text beziehen und :!, der standardmäßig auf keine Zeile wirkt. Zeilenangaben bestehen aus einem absoluten und/oder einem relativen Teil.

Der absolute Teil einer Zeilenangabe kann eine Zeilennummer, eine Marke, ein `.', um die aktuelle Zeile zu bezeichnen, ein $ um die letzte Zeile des Textes zu bezeichnen oder ein vorwärts oder rückwärts Suchen sein. Eine Zeilennummer ist eine Ziffernfolge, die als Dezimalzahl interpretiert wird. Eine Marke wird als ein ' gefolgt von einem Buchstaben angegeben. Marken müssen gesetzt werden, bevor sie verwendet werden können. Im `visual mode' kann eine Marke mit dem Befehl m gefolgt von einem Buchstaben gesetzt werden. Im `colon mode' wird eine Marke mit dem :mark Befehl gesetzt. Ein vorwärts Suchen wird als ein von / eingeschlossener regulärer Ausdruck angegeben. Das Suchen beginnt in der aktuellen Zeile. Ein rückwärts Suchen wird als ein von ? eingeschlossener regulärer Ausdruck angegeben. Das Suchen beginnt in der vorhergehenden Zeile.

Der relative Teil einer Zeilenangabe wird als + oder - gefolgt von einer Dezimalzahl angegeben. Die Zahl wird von dem absoluten Teil abgezogen oder hinzuaddiert.

Ein Sonderfall ist das % Zeichen. Es wird dazu verwendet, alle Zeilen des Textes zu bezeichnen (es ist mit 1,$ identisch).

Beispiele:

:p gibt die aktuelle Zeile aus
:37p gibt Zeile 37 aus
:'gp gibt die Zeile, in der die Marke g gesetzt ist aus
:/foo/p gibt die nächste Zeile, die foo enthält aus
:$p gibt die letzte Zeile des Textes aus
:20,30 p gibt die Zeilen 20-30 aus
:1,$p gibt den gesamten Text aus
:%p gibt ebenfalls den gesamten Text aus
:/foo/-2,+4p gibt 5 Zeilen um das nächste Vorkommen von foo aus

Texteingabe Kommandos

[Zeile] append
[Zeile][,Zeile] change
[Zeile] insert

Das Kommando append fügt Text hinter der angegebenen Zeile ein.

Das Kommando insert fügt Text vor der angegebenen Zeile ein.

Das Kommando change kopiert die angegeben Zeilen in einen Zwischenpuffer, löscht sie und fügt an ihrer Stelle neuen Text ein.

Bei diesen Kommandos wird das Eingeben durch ^D oder durch eine Zeile, die nur einen Punkt enthält, beendet.

Ausschneiden und Einfügen

[Zeile][,Zeile] delete [x]
[Zeile][,Zeile] yank [x]
[Zeile] put [x]
[Zeile][,Zeile] copy Zeile
[Zeile][,Zeile to Zeile
[Zeile][,Zeile] move Zeile

Das delete Kommando kopiert die angegebenen Zeilen in einen Zwischenpuffer, und löscht sie dann.

Das yank Kommando kopiert die angegebenen Zeilen in einen Zwischenpuffer, löscht sie aber nicht.

Das put Kommando fügt den Text eines Zwischenpuffers hinter der angegeben Zeile ein. Bei diesen Kommandos ist x die optionale Angabe eines Zwischenpuffers, mit dem das Kommando arbeiten soll.

Die copy und to Kommandos kopieren den Text direkt hinter eine andere Zeile.

Das move Kommando löscht die angegebenen Zeilen und fügt sie sofort hinter einer anderen ein. Liegt die Zielzeile hinter den gelöschten Zeilen, so werden die Zeilennummern automatisch korrigiert.

Kommandos zum Anzeigen von Text

[Zeile][,Zeile] print
[Zeile][,Zeile] list
[Zeile][,Zeile] number

Das print Kommando stellt die angegebenen Zeilen auf dem Bildschirm dar.

Das list stellt die Zeilen ebenfalls dar, zeigt jedoch auch Control-Zeichen an.

Das number Kommando zeigt die Zeilen mit Zeilennummern an.

Kommandos, die auf den gesamten Text wirken

[Zeile][,Zeile] global / regAusdruck/Befehl

[Zeile][,Zeile] vglobal / regAusdruck/Befehl

Das global Kommando durchsucht die angegebenen Zeilen (oder die ganze Datei, wenn keine Zeilennummern angegeben wurden) nach dem regulären Ausdruck, positioniert den Cursor auf den entsprechenden Zeilen und führt Befehl darauf aus.

Das vglobal Kommando arbeitet im Prinzip genauso, nur führt es Befehl in allen Zeilen aus, die den regulären Ausdruck nicht enthalten.

Kommandos zum Editieren einzelner Zeilen

[Zeile][,Zeile] join[!]
[Zeile][,Zeile] ! progamm
[Zeile][,Zeile] <
[Zeile][,Zeile] >
[Zeile][,Zeile] substitute/regAusdruck/Ersatz/[p][g][c]
[Zeile][,Zeile] &

Das join Kommando hängt alle angegebenen Zeilen aneinander. Wird nur eine Zeile angegeben, wird die darauffolgende Zeile angehängt. Der join Befehl fügt ein oder zwei Leerzeichen zwischen die Zeilen ein. Wird die Variante :join! verwendet, unterbleibt dies.

Das ! Kommando führt die entsprechenden Zeilen einem externen Filterkommando zu und ersetzt sie durch die Ausgabe des Filters. So würde beispielsweise das Kommando :'a,'z! sort die Zeilen zwischen den Marken a und z alphabetisch sortieren.

Die < und > Kommandos rücken die Zeilen um die Größe eines Tabulatorzeichens ein oder aus. Die Größe des Tabulators wird durch die Option shiftwidth festgelegt.

Der Befehl substitute sucht nach dem regulären Ausdruck und ersetzt ihn durch Ersatz Die p Option gibt die geänderten Zeilen aus, die c Option fragt vor jedem Ersetzen, ob das Ersetzen durchgeführt werden soll. Wenn die g Option nicht angegeben wird, bearbeitet elvis nur das erste Auftreten des Ausdrucks in jeder Zeile.

Das & Kommando wiederholt das letzte Suchen und Ersetzen. Es sucht nach dem zuletzt eingegebenen Suchmuster (auch wenn es bei einem anderen Kommando angegeben wurde) und ersetzt es durch Ersatz des letzten substitute Befehls.

Der undo Befehl

Das undo Kommando nimmt die Änderungen des letzten Editierkommandos zurück.

Konfiguration und Status

map[!] [Taste  soll_übersetzt_werden_zu]
unmap[!] Taste
abbr [Kurzform] [erweiterteForm]
unabbr [Kurzform]
digraph[!] [XX [Y]]
set [Optionen]
mkexrc
[Zeile] mark x
visual
version
[Zeile][,Zeile] =
file [Datei]
source Datei
@ x
color [textart] [[bright] Farbe] [on Farbe]

Mit dem map Kommando kann elvis so konfiguriert werden, daß er Funktions- und Sondertasten erkennt und ihnen eine benutzerdefinierte Funktion zuweist. Normalerweise wird die Übersetzung nur im `visual mode' durchgeführt. Wird statt :map aber :map! angegeben, so führt elvis diese Funktion auch im `input' oder `replace mode' aus. Wird :map kein Argument übergeben, gibt es eine Liste der momentan aktiven Übersetzungstabelle aus. Wird der Befehl mit zwei Parametern aufgerufen, so ist der erste die Zeichenfolge, die die Taste tatsächlich sendet, und der zweite die Tastenfolge, die von elvis ausgeführt werden soll. Ist das erste Argument eine Zahl, so übersetzt elvis sie zu der entsprechenden Funktionstaste. So würde map 5 dd der Taste F5 das Kommando dd zuweisen, d. h. eine Zeile löschen.

Das unmap Kommando nimmt die mit map festgelegten Tastaturdefinitionen für die entsprechende Taste wieder zurück.

Das abbr Kommando dient dazu, eine Abkürzungstabelle anzuzeigen bzw. zu erstellen. Die Tabelle besteht aus den gewünschten Abkürzungen und den dazugehörigen ausgeschriebenen Wörtern. Im `input mode' ersetzt elvis Kurzform durch erweiterteForm, sobald nach Kurzform ein nicht alphanumerisches Zeichen eingegeben wird. Soll die Ersetzung verhindert werden, so muß als erstes Zeichen nach Kurzform ein ^V eingegeben werden. Ohne Parameter gibt das Kommando die Tabelle aus. Mit zwei Parametern wird der erste als Abkürzung und der Rest der Zeile als ausgeschriebene Form betrachtet. Das unabbr Kommando löscht Einträge aus der Abkürzungstabelle.

Das digraph Kommando erlaubt es dem Benutzer, die von elvis verstandenen Digraphs anzuzeigen, zu erweitern oder einzelne Digraphs aus der Tabelle zu entfernen. Ohne Parameter wird die Tabelle angezeigt. Um ein Digraph zu setzen, müssen dem Befehl zwei Parameter übergeben werden. Der erste sind die beiden Zeichen, aus denen das Digraph zusammengesetzt ist, der zweite ist das nicht-ASCII Zeichen, das durch die beiden ersten dargestellt werden soll. Das höchstwertigste Bit des nicht-ASCII Zeichens wird von dem digraph Kommando automatisch gesetzt, wenn kein ! an den Kommandonamen angehängt wird. Wird dem Kommando nur der erste Parameter übergeben, so wird das entsprechende Zeichen aus der Tabelle gelöscht.

Das set Kommando dient zum Setzen und Anzeigen der elvis-Optionen. Ohne Argumente zeigt es die geänderten Optionen an. Mit dem Argument all zeigt es den Zustand aller Optionen an. Ansonsten wird das Argument als eine Option, die gesetzt werden soll, behandelt.

Der Befehl mkexrc speichert die momentane Konfiguration in einer Datei names `.exrc' im aktuellen Verzeichnis ab.

Das mark Kommando setzt an die angegebene Stelle eine Marke. Sie kann später dazu verwendet werden, um in einem Kommando eine Zeile zu referenzieren.

Das visual Kommando schaltet aus dem `colon mode' in den `visual mode' zurück.

Der version Befehl gibt die Versionsnummer von elvis aus.

Das = Kommando gibt aus, welche Zeile angegeben wurde oder, wenn ein Bereich angegeben wurde, den Anfangs- sowie den Endpunkt und die Anzahl der Zeilen, die dazwischen liegen.

Das Kommando file gibt den Dateinamen, die Anzahl der Zeilen und den Veränderungsstatus aus. Es kann auch dazu verwendet werden, den Dateinamen zu ändern.

Das source Kommando liest eine Folge `colon mode' Befehle aus einer Datei ein und führt die Befehle aus.

Das @ Kommando führt den Inhalt eines Zwischenspeichers als Befehle aus.

Der color Befehl funktioniert nur unter MS-DOS oder auf einem ANSI-Farbterminal. Er ermöglicht verschiedene Vorder- und Hintergrundfarben für verschiedene Texttypen (normal, fett, kursiv, das PopUp-Menü und die sichtbaren Markierungen) festzulegen. Standardmäßig ändert es die `normal' Farben. Um die Farben für andere Textdarstellungen zu ändern, muß als erstes Argument der Anfangsbuchstabe des Texttyps angegeben werden (z. B. ` :color bright yellow on blue' ändert die Standardtextdarstellung in hellgelben Text auf blauem Hintergrund; `:color b bright white' ändert die Textdarstellung von Fettdruck in hellweiße Schrift auf blauem Hintergrund). Die Hintergrundfarbe entspricht, wenn nicht angegeben, immer der momentanen Hintergrundfarbe. Nur in dem ersten :color Befehl muß sowohl die Vorder- als auch die Hintergrundfarbe für die normale Textdarstellung angegeben werden.

Kommandos zum Arbeiten mit mehreren Dateien

args [Dateien]
next[!] [Dateien]
Next[!]
previous[!]
rewind[!]

Wenn elvis von der Kommandozeile der Shell gestartet wird, werden alle Dateinamen, die übergeben werden, in der Kommandozeilenliste gespeichert. Das :args Kommando zeigt die Kommandozeilenliste an oder definiert eine neue.

Das :next Kommando wechselt von einer Datei in der Kommandozeilenliste zur nächsten. Auch hier kann eine neue Kommandozeilenliste angegeben werden.

Das :Next und das :previous Kommando (sie sind völlig gleichbedeutend) schalten zur vorhergehenden Datei.

Das :rewind Kommando schaltet zur ersten Datei in der Kommandozeilenliste.

Zwischen Dateien wechseln

edit[!] Datei
tag[!] Tagname

Das :edit Kommando dient zum Wechseln der Datei. Es hat nichts mit der Kommandozeilenliste zu tun.

Der :tag Befehl sucht den angegebenen Referenzpunkt Tagname in einer Datei namens `tags'. Diese Datei enthält eine Liste der verfügbaren Referenzpunkte und der Dateien, in denen sie sich befinden. elvis wechselt dann zu der Datei und plaziert den Cursor auf dem Referenzpunkt. Eine solche `tags'-Datei wird beispielsweise von dem Programm `ctags' erstellt.

Arbeiten mit einem Compiler

cc [Dateien]
make [Ziel]
errlist[!] [Fehlerliste]

Das :cc und das :make Kommando starten den Compiler oder das make-Dienstprogramm und leiten deren Ausgabe in eine Fehlerdatei namens Fehlerliste um. Werden keine Dateien angegeben, wird dem Compiler die aktuelle Datei übergeben (sie muß vorher gespeichert werden). Der Inhalt der Fehlerdatei wird dann nach Fehlermeldungen durchsucht. Wird eine Fehlermeldung gefunden, wechselt elvis zu der Datei, in der der Fehler aufgetreten ist und plaziert den Cursor in der entsprechenden Zeile. In der Statuszeile von elvis wird die Fehlerbeschreibung angezeigt. Wurde ein Fehler behoben, wird der Cursor auf die nächste Zeile, in der ein Fehler aufgetreten ist, gesetzt. Im `visual mode' geschieht das auch durch das `*' Kommando.

Es ist auch möglich außerhalb von elvis eine Fehlerdatei zu erstellen und elvis mit der -m Option zu starten. Der Cursor wird dann ebenfalls auf die Zeile gesetzt, in der der erste Fehler aufgetreten ist. Da in der Fehlerdatei gespeichert ist, in welcher Datei der Fehler aufgetreten ist, muß kein Dateinamen angegeben werden.

Wird das :errlist Kommando wiederholt ausgeführt, so versucht elvis die Änderungen der Zeilennummern durch das Einfügen oder Löschen von Zeilen zu berücksichtigen. Diese Korrekturen werden in der Annahme durchgeführt, daß die Datei vom Anfang zum Ende durchgearbeitet wird.

elvis beenden

quit[!]
wq
xit

Das :quit Kommando beendet elvis ohne die Datei zu speichern.

Das :wq Kommando speichert die Datei und beendet danach elvis.

Das :xit Kommando arbeitet wie das wq Kommando, außer daß es die Datei nur speichert, wenn sie geändert wurde.

Datei Ein- und Ausgabekommandos

[Zeile] read Datei
[Zeile][,Zeile] write[!] [[>>]Datei]

Das :read Kommando liest Text aus einer anderen Datei ein und fügt ihn hinter der angegebenen Zeile an. Es kann ebenfalls die Ausgabe eines anderen Kommandos einlesen, indem dem Programmnamen ein ! vorangestellt und anstelle von Datei verwendet wird.

Das write Kommando schreibt die gesamte Datei oder einen Teil in eine andere. Wird ! angegeben, so wird die Datei geschrieben, selbst wenn das readonly-Flag gesetzt ist. Wenn dem Dateinamen `>>' vorangestellt wird, werden die Zeilen an die Datei angehängt. Die Ausgabe des write Befehls kann der Standardeingabe eines Programms zugeführt werden, wenn statt des Dateinamens der Programmname mit vorangestelltem ! angegeben wird. Vorsicht: zwischen dem Ausrufezeichen und dem Programmnamen muß mindestens ein Leerzeichen stehen (w!Dateiname, aber w! Programmname).

Verzeichnis Kommandos

cd [Verzeichnis]
chdir [Verzeichnis]
shell

Die Kommandos :cd und :chdir wechseln das aktuelle Arbeitsverzeichnis (synonym).

Das Kommando :shell startet eine interaktive Shell.

Debugging Kommandos

[Zeile][,Zeile] debug[!]
validate[!]

Diese Kommandos stehen nur zur Verfügung, wenn elvis mit der -DDEBUG Option übersetzt wurde.

Das :debug Kommando gibt die Daten des Blockes aus, der die angegebenen Zeilen enthält. Wird ! mit angegeben, so wird zusätzlich noch der Inhalt des Blockes angezeigt.

Das :validate Kommando überprüft bestimmte interne Variablen auf ihre Konsistenz. Normalerweise produziert das Kommando keine Ausgabe, wenn es keine Fehler entdeckt. Wird ! angegeben, gibt es immer `etwas' aus.

Reguläre Ausdrücke

elvis kann zum Suchen und Ersetzen reguläre Ausdrücke verwenden. Ein regulärer Ausdruck ist eine Zeichenfolge, in der einige Zeichen eine Sonderbedeutung haben. Durch die Verwendung regulärer Ausdrücke bietet sich die Möglichkeit, sehr komplizierten Suchaufgaben gerechtzuwerden.

Funktion

elvis' Funktion zum Auswerten regulärer Ausdrücke belegt die folgenden Zeichen (Metazeichen genannt) mit einer Sonderbedeutung.

\(unterAusdruck)\
Die Metazeichen \( und \) werden dazu verwendet, Unterausdrücke in regulären Ausdrücken zu begrenzen. Trifft der reguläre Ausdruck auf einen Textbereich zu, so behält elvis auf welchen Teilbereich unterAusdruck zutrifft. Das Kommando s/regAusdruck/neuerText/ benutzt diese Funktion.

^
Das ^ Metazeichen bezeichnet einen Zeilenanfang. Soll z. B. foo am Zeilenanfang gefunden werden, so ist der nötige reguläre Ausdruck /^foo/. ^ ist nur ein Metazeichen, wenn es am Anfang eines regulären Ausdrucks steht.

$
Durch $ wird in einem regulären Ausdruck ein Zeilenende bezeichnet. $ ist nur ein Metazeichen, wenn es am Ende eines regulären Ausdrucks steht. /$$/ würde demnach auf ein $ Zeichen am Zeilenende zutreffen.

\<
Das \< Metazeichen findet eine Zeichenkette der Länge Null am Anfang eines Wortes. Eine Zeichenkette, die aus mindestens einem Buchstaben oder einer Zahl besteht, wird als Wort betrachtet. Ein Wort kann nach jedem nicht alphanumerischen Zeichen beginnen.

\>
Das \> Metazeichen findet eine Zeichenkette der Länge Null am Ende eines Wortes. Ein Wort endet am Zeilenende oder vor einem nicht alphanumerischen Zeichen. Der reguläre Ausdruck /$\backslash
 $<ende$\backslash
 $>/ würde jedes Vorkommen des Wortes ende im Text finden, ohne jedoch auch das Vorkommen von ende innerhalb eines anderen Wortes (z. B. Kal ender) anzuzeigen.

.
Das Metazeichen `.' steht für jedes beliebige Zeichen.

[zeichenliste]
Dieser Ausdruck trifft auf jedes Zeichen zu, das in zeichenliste enthalten ist. In zeichenliste kann ein Zeichenbereich angegeben werden, indem zwischen zwei Zeichen ein - gesetzt wird. [a-zA-Z] würde auf jeden Buchstaben zutreffen. Wird der zeichenliste ein ^ vorangestellt, so trifft sie jedes Zeichen, das nicht in ihr enthalten ist. [^ ] würde alle Zeichen außer dem Leerzeichen bezeichnen.

\{n\}
Dies ist ein Näherungsoperator, d. h. er kann nur nach einem Ausdruck angegeben werden, der ein einzelnes Zeichen liefert. Er gibt an, wie oft der Ausdruck, der das Zeichen zurückliefert, wiederholt werden soll. n ist hierbei die Anzahl der Wiederholungen. /^-$\backslash
 ${80$\backslash
 $}$/ bezeichnet eine Zeile aus 80 Bindestrichen. /$\backslash
 $<[a-zA-Z]$\backslash
 ${ 4$\backslash
 $}$\backslash
 $>/ bezeichnet jedes aus vier Buchstaben bestehende Wort.

\{n,m\}
Dies ist ein Näherungsoperator, d. h. er kann nur nach einem Ausdruck angegeben werden, der ein einzelnes Zeichen liefert. Er gibt an, wie oft der Ausdruck, der das Zeichen zurückliefert, wiederholt werden soll. n,m ist hierbei der Bereich, indem die Anzahl der Wiederholungen liegen muß. Wird m weggelassen (das Komma muß bleiben), so wird für m `unendlich' eingesetzt. /$\backslash
 $<[a-zA-Z]$\backslash
 ${ 4,6$\backslash
 $ }$\backslash
 $>/ bezeichnet jedes aus vier, fünf oder sechs Buchstaben bestehende Wort.

*
Dies ist ein Näherungsoperator, d. h. er kann nur nach einem Ausdruck angegeben werden, der ein einzelnes Zeichen liefert und bezeichnet eine beliebige Anzahl Wiederholungen. Er ist gleichbedeutend mit $\backslash
 ${0,$\backslash
 $}.

\+
Dies ist ein Näherungsoperator, d. h. er kann nur nach einem Ausdruck angegeben werden, der ein einzelnes Zeichen liefert und bezeichnet eine beliebige Anzahl Wiederholungen, mindestens jedoch eine. Er ist gleichbedeutend mit $\backslash
 ${1,$\backslash
 $}.

\?
Dies ist ein Näherungsoperator, d. h. er kann nur nach einem Ausdruck angegeben werden, der ein einzelnes Zeichen liefert und drückt aus, daß der vorhergehende Ausdruck optional ist. Er ist gleichbedeutend mit $\backslash
 ${0,1$\backslash
 $}.

Alle anderen Zeichen werden nicht interpretiert und müssen dem Text exakt entsprechen. Um die Sonderbedeutung der Metazeichen aufzuheben, muß ihnen ein $\backslash
 $ vorangestellt werden.

Ersetzungen

Das :s Kommando benötigt mindestens zwei Argumente: einen regulären Ausdruck, und eine Zeichenkette, durch die der Text, auf den der reguläre Ausdruck zutrifft, ersetzt werden soll. Auch in der Ersetzungszeichenkette haben einige Zeichen eine Sonderbedeutung.

&
fügt eine Kopie des Orginaltextes ein
~
(Tilde) fügt eine Kopie des vorhergehenden Ersetzungstextes ein

\x
fügt eine Kopie des Orginaltextes ein, auf den der x-te Unterausdruck $\backslash
 $($\backslash
 $) zutrifft

\U
konvertiert den Text der nächsten & und $\backslash
 $x Kommandos in Großbuchstaben

\L
konvertiert den Text der nächsten & und $\backslash
 $x Kommandos in Kleinbuchstaben

$\backslash
 $E
hebt die Wirkung des letzten $\backslash
 $U oder $\backslash
 $L Kommandos wieder auf

$\backslash
 $u
konvertiert das erste Zeichen des nächsten & oder $\backslash
 $x in einen Großbuchstaben

$\backslash
 $l
konvertiert das erste Zeichen des nächsten & oder $\backslash
 $x in einen Kleinbuchstaben

Um die Sonderbedeutung der Metazeichen aufzuheben, muß ihnen ein $\backslash
 $ vorangestellt werden. Ist die Option `nomagic' gesetzt, so haben & und ~ keine Sonderbedeutung, außer ihnen wird ein $\backslash
 $ vorangestellt.

Optionen

elvis besitzt zwei Optionen, mit denen die Art, in der reguläre Ausdrücke verwendet werden, gesteuert werden kann. Die erste [no]magic ist eine boolean Option, die standardmäßig wahr ist. Solange diese Option eingeschaltet ist, haben alle Metazeichen die oben beschriebenen Bedeutungen. Wird die Option mit :set nomagic auf falsch gesetzt, so behalten nur ^ und $ ihre Sonderbedeutung. Die andere Option ist ebenfalls eine boolean Variable, und heißt [no]ignorecase. Sie ist standardmäßig auf falsch gesetzt. Wird diese Option gesetzt, so unterscheidet elvis bei Suchkommandos nicht zwischen Klein- und Großbuchstaben.

Beispiele

Dieses Beispiel ändert jedes Vorkommen von `Egon' in `Fritz':
:%s/Egon/Fritz/g

Dieses Beispiel löscht den Leerraum am Zeilenende jeder Zeile (die eckigen Klammern enthalten ein Leerzeichen und ein Tabulatorzeichen):
:%s/[         ]$\backslash
 $+$//

Dieses Beispiel ändert alle Buchstaben in der aktuellen Zeile in Großbuchstaben:
:s/.*/$\backslash
 $U&/

Dieses Beispiel unterstreicht alle Buchstaben der aktuellen Zeile, indem es sie in mit Hilfe eines Rückschritts unterstrichene Buchstaben umwandelt:
:s/[A-Za-z]/_^H&/g

Dieses Beispiel sucht den letzten Doppelpunkt einer Zeile und vertauscht den Text vor dem Doppelpunkt mit dem hinter dem Doppelpunkt. Das erste $\backslash
 $( $\backslash
 $) Paar dient dazu, den Text vor dem Doppelpunkt einzulesen, das zweite liest den Text hinter dem Doppelpunkt. Die Metazeichen $\backslash
 $ 1 und $\backslash
 $2 werden in umgekehrter Reihenfolge eingegeben, um die Zeile am Doppelpunkt gespiegelt wieder auszugeben:
:s/$\backslash
 $(.*$\backslash
 $):$\backslash
 $(.*$\backslash
 $)/$\backslash
 $2:$\backslash
 $1/

Die Optionen von elvis

Die Optionen werden mit dem `colon mode' Kommando :set gesetzt. Der Wert der Optionen beeinflußt das Verhalten der nachfolgenden Befehle. Der Bequemlichkeit zuliebe haben die Optionen einen langen Name, der ihre Bedeutung beschreibt, und einen kurzen Namen, der schnell einzugeben ist. elvis versteht beide Namen. Es gibt drei verschiedene Arten Optionen: boolean, Zeichenketten und numerische. Boolean Optionen werden auf wahr gesetzt, indem ihr Name dem :set Kommando übergeben wird. Wird ihrem Namen ein no vorangestellt (z. B. nomagic) so werden sie auf falsch gesetzt. Zusätzlich gibt es die Möglichkeit, boolean Optionen ein neg voranzustellen, wodurch ihr aktueller Status umgekehrt wird. Dies ist eine Erweiterung von elvis gegenüber ex/vi. Um den Inhalt einer numerischen oder einer Zeichenkettenoption zu ändern, gibt man im :set Kommando den Namen gefolgt von einem `=' und dem neuen Wert an (z. B. :set tabstop= 8). Bei Zeichenkettenoptionen kann der Wert in Anführungszeichen eingeschlossen werden.

autoindent (ai)
Wird die autoindent Option gesetzt, rückt elvis jede neue Zeile soweit wie die vorherige ein. Ohne diese Option beginnt jede Zeile in der ersten Spalte.

autoprint (ap)
Diese Option betrifft nur den `ex mode'. Ist diese Option gesetzt, gibt elvis, wenn der Cursor in eine neue Zeile bewegt wird oder das letzte Kommando die Datei verändert hat, die aktuelle Zeile aus.

autotab (at)
Die Option bestimmt das Verhalten von elvis beim Einfügen von Leerraum an Zeilenanfang ( autoindent). Ist die autotab Option gesetzt, so verwendet elvis eine Mischung aus Tabulatorzeichen und Leerzeichen um die richtige Menge Leerraum einzufügen. Ist die Option ausgeschaltet, so verwendet elvis nur Leerzeichen. Die autotab Option betrifft nur den den automatisch eingefügten Leerraum.

autowrite (aw)
Soll von einer geänderten Datei, z. B. mit dem :tag oder dem :next Kommando, zu einer anderen geschaltet werden, so gibt elvis eine Fehlermeldung aus und wechselt die Datei nicht. Ist die autowrite Option gesetzt, so speichert elvis die Datei und wechselt zur nächsten.

beautify (bf)
Diese Option löscht, wenn sie gesetzt ist, beim Laden der Datei alle Kontrollzeichen aus dem Text. Wird sie gesetzt, wenn schon eine Datei editiert wird, so ist sie bezüglich der aktuellen Datei wirkungslos.

cc (cc)
Sie enthält den Namen des C-Compilers, meistens cc -c oder gcc -c.

charattr (ca)
Viele Textverarbeitungsprogramme erlauben Text unterstrichen, fett oder kursiv darzustellen, indem in den Text Formatkommandos wie `$\backslash
 $fU', `$\backslash
 $fB' oder `$\backslash
 $fI' eingefügt werden. Normalerweise behandelt elvis diese Kommandos wie normalen Text. Ist die Option charattr gesetzt, so interpretiert elvis diese Befehle und zeigt den Text in der entsprechenden Darstellungsweise an, wenn das Terminal dies unterstützt und in der Datei /etc/termcap die richtigen Einträge existieren.

columns (co)
Diese Option enthält die Anzahl der Spalten auf dem Bildschirm.

digraph (dig)
Diese Option steuert, ob Digraphs erkannt werden. Der Standardwert ist nodigraph, was bedeutet, daß elvis keine Sonderzeichen darstellt.

directory (dir)
elvis speichert den zu bearbeitenden Text in Temporärdateien. Diese Option gibt an, in welchem Verzeichnis sie angelegt werden sollen. Diese Option kann nur in der Datei .exrc gesetzt werden, da elvis nach dem Abarbeiten dieser Datei schon Temporärdateien anlegt, d. h. das Ändern der Option käme zu spät.

edcompatible (ed)
Diese Option beeinflußt das Verhalten des substitute Kommandos. Normalerweise ist diese Option ausgeschaltet, was dazu führt, daß alle Optionen des substitute Kommandos als nicht gesetzt betrachtet werden, wenn sie nicht explizit angegeben sind. Ist diese Option eingeschaltet, so verwendet elvis die Optionen des vorherigen substitute Kommandos bis sie explizit geändert werden.

equalprg (ep)
Diese Option enthält den Namen und die Kommandozeilenoptionen des Formatierers, der für das = Kommando verwendet werden soll. Die Standardeinstellung ist fmt, so daß mit dem = Kommando der Text auf 80 Zeichen pro Zeile formatiert wird.

errorbells (eb)
Normalerweise piepst elvis, wenn etwas Falsches eingegeben wird. Mit dieser Option wird der Warnton abgeschaltet.

exrc
Diese Option gibt an, ob eine .exrc Datei im momentanen Verzeichnis beim Starten von elvis ausgeführt werden soll. Wird diese Option in der Datei .exrc im Heimatverzeichnis eingeschaltet, so versucht elvis die Datei .exrc im aktuellen Verzeichnis auszuführen. Diese Option ist hauptsächlich als Schutz gedacht. Sollte z. B. ein böser Mensch auf den Gedanken kommen, mit echo >/tmp/.exrc '!rm -rf $HOME' im Verzeichnis /tmp eine Datei .exrc zu erstellen, so wird ein Benutzer, der in /tmp eine Datei editieren möchte, alle Dateien in seinem Heimatverzeichnis verlieren.

exrefresh (er)
Im `ex mode' gibt elvis alle Zeilen einzeln auf dem Bildschirm aus. Wird diese Option gesetzt, so schreibt elvis alle Zeilen auf einmal. Ist z. B. der write() Systemaufruf sehr Prozessorzeit intensiv, oder wird eine Fensterumgebung verwendet, so kann es sich anbieten, diese Option auf falsch zu setzen, da einige Fensterumgebungen den Text wesentlich schneller ausgeben, wenn mehrere Zeilen auf einmal geschrieben werden. Diese Option hat keinen Einfluß auf den `visual command mode' oder den `input mode'.

flash (vbell)
Unterstützt der Termcapeintrag eine optische Alternative zum Warnton, so wird diese Option gesetzt. Ist keine Unterstützung vorhanden, so wird sie von elvis auf falsch gesetzt und läßt sich auch nicht einschalten.

flipcase (fc)
Diese Option steuert die Umwandlung von Groß- in Kleinbuchstaben und umgekehrt bei nicht ASCII Zeichen. Die in der Zeichenkette angegebenen Zeichen werden als Paare interpretiert. Wird der ~ Befehl auf einem nicht ASCII Zeichen ausgeführt, so vergleicht elvis das Zeichen mit der Liste und ersetzt es durch das andere des Paares.

hideformat (hf)
Viele Textformatierer erwarten im Text Formatkommandos, die mit einem `.' beginnen. Normalerweise zeigt elvis diese Zeilen wie normalen Text an. Ist die hideformat Option gesetzt, so werden diese Zeilen als Leerzeilen angezeigt.

ignorecase (ic)
Normalerweise unterscheidet elvis beim Textsuchen zwischen Groß- und Kleinbuchstaben. Mit dieser Option läßt sich diese Unterscheidung abschalten.

inputmode (im)
Diese Option sollte in .exrc gesetzt werden und bringt elvis dazu im `input mode' zu starten. Das Verlassen des `input modes' mit ESC ist nach wie vor möglich.

keytime (kt)
Auf den meisten Terminals liefern die Cursortasten zusammengesetzte Tastaturcodes. Diese Übertragung benötigt eine bestimmte Zeit, bis die komplette Sequenz eingegangen ist. Die keytime Option erlaubt, die maximale Übertragungszeit für die komplette Sequenz anzugeben. Auf den meisten Systemen erfolgt (wie bei Linux) die Angabe in zehntel Sekunden zwischen den einzelnen Zeichen. Die keytime Option auf 1 zu setzen, sollte vermieden werden, da viele Systeme nur die Anzahl der CPU-Takte zählen, und so, wenn eine Taste kurz vor Beginn eines neuen Takts gedrückt wird, kaum Zeit zum Einlesen der Sequenz zur Verfügung steht. Hat das System relativ lange Antwortzeiten, oder läuft elvis unter einer grafischen Benutzeroberfläche, so sollte bei keytime mindestens eine Sekunde angegeben werden. Als Sonderfall kann keytime auf 0 gesetzt werden. Dadurch wird das Timeout abgeschaltet, was dazuführen kann, daß elvis, wenn die Cursortasten Escape-Sequenzen senden, ewig wartet und nicht in den `command mode' zurückkehrt. Diese Option ist eine Erweiterung der Timeout-Option bei ex/vi.

keywordprg (kp)
elvis hat eine besondere Schlüsselwortfunktion. Befindet sich der Cursor auf einem Wort, so kann der Benutzer SHIFT-K eingeben, und elvis benutzt ein anderes Programm, um das Schlüsselwort nachzuschlagen und zusätzliche Informationen anzuzeigen. Diese Option gibt an, welches Programm verwendet werden soll. Der Standardwert ist ,,ref``. Dieses Programm schlägt Definitionen von C-Funktionen in einer Datei namens refs nach, die von dem Programm ctags generiert wurde. Dieser Programmaufruf kann durch einen anderen ersetzt werden, z. B. durch eine Rechtschreibhilfe oder durch ein Online-Manual. elvis startet das Programm mit dem Schlüsselwort als einzigem Kommandozeilenparameter. Das Programm sollte seine Ausgabe auf die Standardausgabe schreiben und als Status 0 zurückliefern.

lines (ln)
Diese Option enthält die Anzahl der Bildschirmzeilen.

list (li)
Im nolist Modus zeigt elvis den Text `normal' auf dem Bildschirm an, d. h. Tabulatorzeichen werden zu einer bestimmten Anzahl Leerzeichen umgewandelt. Wird die list Option gesetzt, so zeigt elvis für jedes Tabulatorzeichen ^I und am Zeilenende ein $ an.

magic (ma)
elvis' Suchmechanismus kann reguläre Ausdrücke auswerten. Reguläre Ausdrücke sind Zeichenketten, in denen einige Zeichen eine Sonderbedeutung haben. Normalerweise ist die magic Option gesetzt, d. h. elvis weist einigen Zeichen Sonderbedeutungen zu. Wird diese Option ausgeschaltet, so verlieren alle Zeichen außer ^ und $ ihre Sonderbedeutung.

make (mak)
Das :make Kommando startet das ,,make`` Dienstprogramm. Die make Option enthält den Namen und die Kommandozeilenoptionen des Dienstprogramms.

mesg
Diese Option wird von elvis ignoriert.

modelines (ml)
elvis unterstützt Moduszeilen. Moduszeilen sind Zeilen am Anfang oder Ende des Textes, die typischerweise Einträge wie ,,ex:set ts=5 ca kp=spell wm=15`` enthalten. Anderer Text darf ebenfalls in Moduszeilen vorkommen, so daß sie z. B. als Kommentar geschrieben werden können /* ,,ex:set ts=5 ca kp=spell wm=15`` */. Normalerweise werden die Moduszeilen aus Sicherheitsgründen ignoriert. Diese Option muß in .exrc gesetzt werden.

more
Wenn elvis im `visual mode' mehrere Meldungen in der letzten Bildschirmzeile ausgeben muß, so wartet er mit dem Anzeigen der nächsten bis eine Taste gedrückt wurde. Wird die Option auf falsch gesetzt, so wartet elvis nicht. Das bedeutet, daß nur die letzte Meldung gelesen werden kann. Sie ist aber meistens auch die Wichtigste.

nearscroll (ns)
Die Zeile, auf der der Cursor steht, ist immer auf dem Bildschirm. Wird der Cursor zu einer Zeile bewegt, die sich nicht auf dem Bildschirm befindet so scrollt elvis, wenn die Zeile nicht weit entfernt ist, oder er baut den Bildschirm neu auf. Die nearscroll Option definiert, was von elvis als `weiter entfernt' verstanden werden soll. Wird die Option z. B. auf 1 gesetzt, so scrollt elvis maximal eine Zeile. Setzt man die Option auf 0, so wird das Scrollen abgeschaltet und elvis baut den Bildschirm immer neu auf.

novice (nov)
Das Kommando :set novice ist synonym zu :set nomagic report=1 showmode.

number (nu)
Über die Option number wird gesteuert, ob elvis vor jeder Zeile eine Zeilennummer ausgibt. Die Zeilennummern sind nicht Teil des Textes. Wird die Datei gespeichert, so wird sie ohne Zeilennummern auf die Festplatte geschrieben.

paragraphs (pa)
Die { und } Kommandos bewegen den Cursor jeweils um einen Absatz vorwärts oder zurück. Absätze können durch Leerzeilen oder `Punktkommandos' eines Textformatierers voneinander getrennt werden. Die Option paragraphs ermöglicht elvis so zu konfigurieren, daß er mit verschiedenen Textformatierern korrekt zusammenarbeitet. elvis geht davon aus, daß ein Formatkommando aus einem `.' mit einem oder zwei anschließenden Zeichen besteht. Die paragraphs Option besteht aus einer Zeichenkette, in der jedes Zeichenpaar eine Befehlskombination des Absatzkommandos des Formatierers darstellt.

prompt (pr)
Wird die Option auf falsch gesetzt, so gibt elvis kein `:' mehr aus, wenn er die Eingabe eines ex-Kommandos erwartet. Diese Option ist nur hilfreich, wenn elvis auf einer extrem langsamen Maschine verwendet wird.

readonly (ro)
Normalerweise erlaubt elvis das Schreiben jeglicher Dateien, auf die der Benutzer Schreibberechtigung besitzt. Besitzt der Benutzer keine Schreibberechtigung auf die Datei, so kann die geänderte Datei nur in eine andere geschrieben werden. Wird die readonly Option gesetzt, so geht elvis davon aus, daß auf keine Datei geschrieben werden darf. Diese Option ist insbesondere hilfreich, wenn elvis nur zum Anzeigen von Dateien verwendet werden soll. So wird verhindert, daß eine Datei versehentlich geändert wird. Diese Option ist normalerweise ausgeschaltet, außer elvis wird als view gestartet.

remap
Über diese Option wird gesteuert, wie elvis sich verhält, wenn in einer :map Angabe Textabschnitte vorkommen, die schon als Mapeintrag existieren. Ist die Option eingeschaltet, so werden Mapeinträge innerhalb eines :map Kommandos wie Tastendrücke behandelt. So würde z. B. :map A B und :map B C dazu führen, daß A zu C übersetzt wird, falls die Option eingeschaltet ist.

report (re)
Beim Editieren können sich Kommandos auf mehrere Zeilen beziehen. Ändert ein Kommando viele Zeilen, so gibt elvis eine Meldung aus, wieviele Zeilen geändert wurden. Diese Option steuert, ab wievielen geänderten Zeilen elvis eine Meldung ausgibt.

ruler (ru)
Wird diese Option eingeschaltet, so gibt elvis in der letzten Zeile ständig die momentane Cursorposition in Form von Zeile,Spalte aus.

scroll (sc)
Die Kommandos ^U und ^D scrollen normalerweise im Text einen halben Bildschirm vorwärts oder zurück. Dies läßt sich mit dieser Option ändern. Sie enthält die Anzahl Zeilen, um die gescrollt werden soll. Wird das Kommando ^U oder ^D mit einem Anzahl Parameter aufgerufen, so wird diese Option gleich Anzahl gesetzt.

sections (se)
Die [ und ] Kommandos bewegen den Cursor jeweils um ein Kapitel vorwärts oder zurück. Kapitel können durch Leerzeilen oder `Punktkommandos' eines Textformatierers voneinander getrennt werden. Die Option paragraphs ermöglicht elvis so zu konfigurieren, daß er mit verschiedenen Textformatierern korrekt zusammenarbeitet. elvis geht davon aus, daß ein Formatkommando aus einem `.' mit einem oder zwei anschließenden Zeichen besteht. Die section Option besteht aus einer Zeichenkette, in der jedes Zeichenpaar eine Befehlskombination des Kapitelkommandos des Formatierers darstellt.

shell (sh)
Startet elvis eine Shell beispielsweise durch ein ! oder :shell Kommando, so wird das Kommando dieser Option ausgeführt. Der Standardwert ist ,,/bin/sh``, außer die SHELL Variable ist gesetzt. In diesem Fall wird das in dieser Variable genannte Kommando als Standardwert angenommen.

shiftwidth (sw)
Mit den Kommandos < und > können Zeilen um eine bestimmte Anzahl Spalten ein oder ausgerückt werden. Diese Option enthält die Anzahl der Spalten, um die ein- oder ausgerückt werden soll.

showmatch (sm)
Wird die Option showmatch gesetzt, so bewegt elvis im `input mode', wenn eine Klammer { } [ ] ( ) eingegeben wird, den Cursor kurzzeitig zur jeweils zugehörigen anderen Klammer des Paares.

showmode (smd)
Im `visual mode' ist es leicht möglich zu vergessen, in welchem Modus sich elvis gerade befindet. Wird diese Option eingeschaltet, so zeigt elvis in der rechten unteren Ecke des Bildschirms ständig eine Nachricht an, die den momentanen Modus angibt.

sidescroll (ss)
Bei langen Zeilen scrollt elvis den Bildschirm seitwärts. (Hierin unterscheidet er sich von ex/vi, der lange Zeilen über mehrere Zeilen verteilt darstellt.) Um die Anzahl der Scrolloperationen zu verkleinern, scrollt elvis den Bildschirm immer um mehrere Spalten. Diese Option enthält die Anzahl der Spalten, um die elvis den Bildschirm bewegt. Diese Option kann umso kleiner eingestellt werden, je schneller der Rechner den Bildschirm scrollen kann.

sync (sy)
Falls das System abstürzt, kann der größte Teil einer geänderten Datei mit Hilfe der Temporärdatei, die elvis verwendet, um Änderungen zu speichern, wiederhergestellt werden. Trotzdem werden von dem Betriebsystem nicht alle Änderungen sofort auf die Festplatte geschrieben. Über die sync Option läßt sich festlegen, ob elvis die Speicherung der Änderungen dem Betriebsystem überläßt, oder ob nach jeder Änderung ein sync() aufgerufen wird. Letzteres ist wesentlich langsamer und auf Mehrbenutzersystemen geradezu unfreundlich, da es die gesamte Systemleistung reduziert.

tabstop (ts)
Normalerweise ist ein Tabulatorzeichen 8 Spalten breit. Über diese Option läßt sich ein anderer Wert einstellen.

taglenght (tl)
Diese Option bestimmt die Anzahl der signifikanten Zeichen beim Nachschlagen eines Schlüsselwortes. Als Sonderfall kann die Option auf 0 gesetzt werden. Dann müssen alle Zeichen auf das Schlüsselwort zutreffen.

term (te)
Diese Option kann nur gelesen werden und gibt an, welchen Terminaleintrag aus /etc/termcap elvis verwendet.

terse (tr)
Ex/vi verwendet diese Option, um festzulegen, ob lange oder kurze Meldungen ausgegeben werden sollen. elvis hat nur einen Satz Meldungen, d. h. diese Option ist wirkungslos.

timeout (to)
Das Kommando :set notimeout ist gleichbedeutend mit :set keytime=0. Das Kommando :set timeout ist gleichbedeutend mit :set keytime=1. Dadurch wird das Verhalten der ESC-Taste festgelegt.

warn (wa)
Wurde eine Datei geändert, ohne gespeichert zu werden, so gibt elvis vor einem :!Befehl Kommando eine Warnung aus. Ebenso gibt elvis eine Meldung nach einem erfolgreichen Suchen, das das Dateiende überschritten hat, aus. Die nowarn Option unterbindet dieses Verhalten.

window (wi)
Diese Option bestimmt, wieviele Zeilen des Bildschirms nach einem langen Bewegungskommando neu aufgebaut werden. Auf schnellen Terminals wird diese Option auf die Anzahl der Bildschirmzeilen minus eins gesetzt. Damit wird der gesamte Bildschirm um den Cursor herum zur Textausgabe genutzt. Auf einem langsamen Terminal bietet es sich an, diese Zahl zu reduzieren, damit beispielsweise ein n Kommando nach einem Suchen schneller ausgeführt werden kann.

wrapmargin (wm)
Normalerweise können sehr lange Zeilen eingegeben werden. Wird die Option auf einen anderen Wert als 0 gesetzt, so fügt elvis automatisch einen Zeilenumbruch an einem Wortanfang ein, wenn die Zeile zu nah an den rechten Bildschirmrand herankommt. So würde auf einem 80-Zeichen Bildschirm das Kommando :set wm=10 dazuführen, daß alle Zeilen auf höchstens 70 Zeichen pro Zeile umgebrochen werden.

wrapscan (ws)
Wird nach einer Textstelle gesucht, so findet sie elvis unabhängig von der Position innerhalb der Datei. Erreicht elvis beim Suchen das Dateiende, so zeigt er in der linken unteren Bildschirmecke die Meldung ,,wrapped`` und setzt das Suchen in der ersten Zeile der Datei fort. Wird die wrapscan Option ausgeschaltet, so beendet elvis das Suchen am Dateiende.

writeany (wr)
Das Auschalten dieser Option schützt existierende Dateien vor versehentlichem Überschreiben. So würde das Kommando :w foo nicht ausgeführt werden, wenn die Datei foo schon existiert. Das Kommando :w! foo wird unabhängig von der Einstellung der Option immer ausgeführt.

Zwischenspeicher (Puffer)

Wenn elvis Text löscht, wird er in einen Puffer kopiert. Dies geschieht sowohl im `visual mode', als auch im `ex mode'. Es gibt keine Grenze, wieviel Text in einem Zwischenspeicher gespeichert werden kann. elvis besitzt 36 Zwischenpuffer, 26 mit Namen a-z, 9 unbenannte 1-9 und einen besonderen `.'. Im `ex mode' verwenden die Kommandos :move und :copy einen Puffer, um den Text zwischenzuspeichern.

Text zwischenspeichern

Im `visual mode' benutzen die Kommandos d, y, c, C, s und x die Zwischenspeicher 1-9. Standardmäßig wird der Text in Puffer 1 gespeichert. Der Inhalt des ersten Puffers kommt in den zweiten. Der Inhalt des zweiten in den dritten. Der Inhalt des neunten Puffers geht verloren. Auf diese Weise bleibt der Text, der in den letzten neun Kommandos gelöscht wurde, erhalten.
Ebenso kann Text in einen benannten Zwischenspeicher kopiert werden. Damit der Text in den gewünschten Puffer kopiert wird, muß der Name des Puffers mit einem doppelten Anführungszeichen vor dem Befehl angegeben werden. In diesem Fall werden die Puffer 1-9 nicht verändert.
Um Text an einen Puffer anzuhängen, wird sein Name als Großbuchstabe vor dem Kommando angegeben.
Der Puffer `.' hat eine Sonderbedeutung. Er enthält die Eingaben des letzten `input modes'. Er wird dazu verwendet, das `.' und ^A Kommando zu implementieren. Um im `ex mode' zusammen mit den Kommandos :delete, :change und :yank Text in einen benannten Puffer zu kopieren, muß der Puffer nach dem Befehl angegeben werden (z. B. :20,30y a). Auf die Puffer 2-9 und `.' kann nicht direkt, schreibend zugegriffen werden.

Einfügen aus einem Puffer

Es gibt zwei Arten Text einzufügen: den Zeilenmodus und den Zeichenmodus. Enthält ein Puffer ganze Zeilen (z. B. von einem dd Kommando), so wird der Zeilenmodus verwendet. Enthält ein Puffer nur Teile von Zeilen (z. B. von einem d3w Kommando), wird der Zeichenmodus verwendet. Die `ex'-Kommandos schneiden immer ganze Zeilen aus. Im Zeichenmodus wird der Text in die Zeile eingefügt, in der der Cursor steht. Im Zeilenmodus wird der Text in eine neue Zeile oberhalb oder unterhalb der aktuellen Cursorposition eingefügt.
Im `visual mode' fügen die Kommandos p und P Text aus einem Puffer ein. Standardmäßig wird der Puffer 1 verwendet. Soll ein anderer Puffer Verwendung finden, so muß sein Name vor dem Kommando angegeben werden (z. B. ,,ap fügt den Puffer a vor dem Cursor ein). Das p Kommando fügt den Pufferinhalt vor dem Cursor ein, das P Kommando dahinter. Im `ex mode' wird der Text nach einer angegeben Zeile eingefügt. Soll ein anderer als der Puffer 1 verwendet werden, muß sein Name nach dem Kommando stehen.

Makros

Der Inhalt eines benannten Puffers kann als Kommandofolge ausgeführt werden. Um die Kommandos in den Puffer zu bringen, werden sie zuerst in die Datei geschrieben und anschließend in einen benannten Puffer gelöscht. Um den Inhalt eines Puffers als `ex' Befehle auszuführen wird das `ex' Kommando @ verwendet (:@z führt den Inhalt des Puffers z aus). Soll der Pufferinhalt als `vi' Kommandos ausgeführt werden, wird das `visual mode' Kommando @ verwendet. Die beiden @ Kommandos unterscheiden sich dadurch, daß beim `ex'-Kommando der Puffer nach dem Befehl angegeben wird, und der Inhalt als `ex' Befehle interpretiert wird. Im `vi' Kommando wird der Puffer vor dem Kommando angegeben, und der Pufferinhalt wird als `vi'-Befehle interpretiert.
Bei der Verwendung des `vi'-Kommandos @ ist zu beachten, das der Pufferinhalt Zeichen für Zeichen interpretiert wird. Jedes Zeichen wird als Tastendruck betrachtet. Ist der Pufferinhalt z. B. mit ,,zdd ausgeschnitten worden, so wird das Zeilenvorschubzeichen am Ende der Zeile ebenfalls als Tastendruck ausgeführt und der Cursor eine Zeile abwärts bewegt. Um dieses Verhalten zu verhindern, sollte der Puffer mit 0,,z D ausgeschnitten werden.
Obwohl in Zwichenspeichern nahezu jede beliebige Textmenge gespeichert werden kann, kann elvis nur kleine Puffer als Makros ausführen. Ist ein Puffer zu groß, um ausgeführt werden zu können, gibt elvis eine Fehlermeldung aus. Die maximale Makrogröße liegt bei ca. 1000 Zeichen. Desweiteren ist es nicht möglich :@ Befehle zu verschachteln, sie aus der Datei .exrc heraus auszuführen, oder aus einem :@ Kommando heraus einen :source Befehl aufzurufen.

Wechseln der Arbeitsdatei

Nach dem Starten von elvis sind alle Puffer leer. Wird (z. B. mit einem :n Befehl) die Datei gewechselt, so werden die 9 anonymen Puffer gelöscht. Der Inhalt der Puffer a-z bleibt jedoch erhalten.

Autor:

Steve Kirkendall

  


next up previous contents index
Next: elvrec Up: Von GNU's, Muscheln und Previous: egrep

Das Linux Anwenderhandbuch
(C) 1997 LunetIX