Next: elvrec
Up: Von GNU's, Muscheln und
Previous: egrep
elvis [-reviR] [-t tag] [-m [Datei]] [-w Fenstergröße] [-c Befehl] [+Befehl]
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.
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'.
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'.
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)
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) | |
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)
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)
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)
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
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.
^
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.
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.
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.
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.
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 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 |
[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.
[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.
[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.
[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.
[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.
Das undo Kommando nimmt die Änderungen des letzten Editierkommandos zurück.
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.
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.
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.
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.
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.
[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).
cd [Verzeichnis]
chdir [Verzeichnis]
shell
Die Kommandos :cd und :chdir wechseln das aktuelle Arbeitsverzeichnis (synonym).
Das Kommando :shell startet eine interaktive Shell.
[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.
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.
^
foo/. ^
ist nur ein Metazeichen, wenn es am
Anfang eines regulären Ausdrucks steht.
^
vorangestellt, so trifft
sie jedes Zeichen, das nicht in ihr enthalten ist. [^
]
würde alle Zeichen außer dem Leerzeichen bezeichnen.
^-
{80}$/ bezeichnet eine Zeile aus 80 Bindestrichen.
/<[a-zA-Z]{
4}>/ bezeichnet jedes aus vier
Buchstaben bestehende Wort.
Alle anderen Zeichen werden nicht interpretiert und müssen dem Text exakt entsprechen. Um die Sonderbedeutung der Metazeichen aufzuheben, muß ihnen ein vorangestellt werden.
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.
Um die Sonderbedeutung der Metazeichen aufzuheben, muß ihnen ein
vorangestellt werden. Ist die Option `nomagic' gesetzt,
so haben & und ~
keine Sonderbedeutung, außer ihnen wird
ein vorangestellt.
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.
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/[ ]+$//
Dieses Beispiel ändert alle Buchstaben in der aktuellen Zeile in
Großbuchstaben:
:s/.*
/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 ( ) Paar
dient dazu, den Text vor dem Doppelpunkt einzulesen, das zweite liest
den Text hinter dem Doppelpunkt. Die Metazeichen
1 und 2 werden in umgekehrter Reihenfolge
eingegeben, um die Zeile am Doppelpunkt gespiegelt wieder auszugeben:
:s/(.*
):(.*
)/2:1/
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.
~
Befehl auf einem nicht ASCII
Zeichen ausgeführt, so vergleicht elvis das Zeichen mit der
Liste und ersetzt es durch das andere des Paares.
^I
und am Zeilenende ein
$ an.
^
und $
ihre Sonderbedeutung.
*
,,ex:set ts=5 ca kp=spell wm=15`` *
/.
Normalerweise werden die Moduszeilen aus Sicherheitsgründen
ignoriert. Diese Option muß in .exrc gesetzt werden.
^
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.
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.
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.
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.
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.
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.
Das Linux Anwenderhandbuch