Don't call putin a pig. Pigs don't deserve that.
Kalush Orchestra - Stefania (Official Video Eurovision 2022) auf YouTube
Oh, roter Schneeball auf der Wiese - Andriy Khlyvnyuk and The Kiffness auf YouTube
Pink Floyd - Hey Hey Rise Up (feat. Andriy Khlyvnyuk of Boombox) auf YouTube
A little lesson in history because it seems to repeat itself in west and east of russia:
The real name of Vladivostok ('Ruler of the East') is 海參崴 / Hǎishēnwǎi.
In reality it is a chinese city, check it's population. Imperialistic russia took it 1860.
If China re-claims it would be much more reasonable than any claim from russia related to Ukraine.
... dort war er fast immer
Kleine vi Referenz (Unix) |
||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
nach oben (Seitenanfang) | ||||||||||||||||||||||||
Aufrufarten des Editors vi | ||||||||||||||||||||||||
::: Beenden ::: Speichern ::: Cursorbewegung ::: Blättern | ||||||||||||||||||||||||
::: Editieren ::: Suchen / Ersetzen ::: Sonderzeichen ::: Optionen ::: Shell | ||||||||||||||||||||||||
Option | Beschreibung | |||||||||||||||||||||||
Allgemeine Aufrufsyntax
vi [-r] [-l] [-R] [-wn] [+Befehl] Datei |
||||||||||||||||||||||||
-l | LISP-Modus einschalten | |||||||||||||||||||||||
-r | recover (wiederherstellen). Nach Systemabsturz bei aktivem Editor oder nach Beenden des Editors mit kill wird bei Neustart von vi die Bearbeitung automatisch an der Stelle fortgesetzt, an der man sich gerade befand. | |||||||||||||||||||||||
vi -r <Datei> | Wiederherzustellenden Text in <Datei> schreiben (siehe auch Option -r) | |||||||||||||||||||||||
-R | Read Only (nur lesen). Die zu öffnende Datei wird im Lesemodus geöffnet, keine Änderungen möglich. | |||||||||||||||||||||||
-wn | Die Fenstergrösse (Window size) wird auf n Zeilen eingestellt. | |||||||||||||||||||||||
+Befehl | Die möglichen Befehle stammen aus dem Vorrat des Ex-Editors, sie werden vor dem eigentlichen Editieren abgearbeitet. | |||||||||||||||||||||||
|
||||||||||||||||||||||||
|
||||||||||||||||||||||||
vi verlassen, mit/ohne speichern, ... | ||||||||||||||||||||||||
::: Aufrufen ::: Speichern ::: Cursorbewegung ::: Blättern | ||||||||||||||||||||||||
::: Editieren ::: Suchen / Ersetzen ::: Sonderzeichen ::: Optionen ::: Shell | ||||||||||||||||||||||||
Option | Beschreibung | |||||||||||||||||||||||
Zur Eingabe eines Kommandos muss der Editor im Befehlsmodus sein oder durch Betätigung der Esc-Taste in diesen geschaltet werden. Da es normalerweise keine Anzeige für den jeweils aktiven Modus gibt, sollte man die Esc-Taste grundsätzlich betätigen. Es schadet auf keinen Fall!
Im Befehlsmodus springt der Cursor nach Eingabe eines Doppelpunktes (:) in die unterste Bildschirmzeile. |
||||||||||||||||||||||||
ZZ | Der aktuelle Pufferinhalt wird gespeichert und die Session beendet. Es ist keine Bestätigung mit der [Return]-Taste erforderlich. | |||||||||||||||||||||||
:x | eXit (verlassen). Siehe ZZ. | |||||||||||||||||||||||
:wq |
Write and Quit (schreiben und beenden). Puffer speichern, Editor verlassen.
Typischer Fehler von Neueinsteigern: Eingabe von ":qw". Das funktioniert nicht, da der Editor sich nicht zuerst beenden und dann die Daten speichern kann. |
|||||||||||||||||||||||
:q | Quit (beenden). Geht nur, wenn keine Änderungen am ursprünglichen Dateiinhalt vorgenommen wurden. | |||||||||||||||||||||||
:q! | Quit! (beenden!). Beenden ohne speichern. Änderungen gehen verloren. | |||||||||||||||||||||||
Speichern | ||||||||||||||||||||||||
::: Aufrufen ::: Beenden ::: Cursorbewegung ::: Blättern | ||||||||||||||||||||||||
::: Editieren ::: Suchen / Ersetzen ::: Sonderzeichen ::: Optionen ::: Shell | ||||||||||||||||||||||||
mit | Wirkung | |||||||||||||||||||||||
:w | Write (schreiben). Puffer speichern. | |||||||||||||||||||||||
:w! | Puffer speichern, read-only Dateien überschreiben. | |||||||||||||||||||||||
:w Datei | Pufferinhalt nicht in Originaldatei, sondern in Datei Datei speichern. Es werden keine bestehenden Daten überschrieben, statt dessen erfolgt eine Fehlermeldung. | |||||||||||||||||||||||
:w! Datei | Puffer nicht in Originaldatei, sondern in Datei speichern. Falls Datei schon existiert wird sie mit neuem Inhalt überschrieben. | |||||||||||||||||||||||
:n,mw Datei |
Pufferinhalt von Zeile n bis m in Datei speichern.
Hinweis: Die Anzeige der Zeilennummern kann mit :se nu aktiviert werden. |
|||||||||||||||||||||||
Cursor in vi positionieren | ||||||||||||||||||||||||
::: Aufrufen ::: Beenden ::: Speichern ::: Blättern | ||||||||||||||||||||||||
::: Editieren ::: Suchen / Ersetzen ::: Sonderzeichen ::: Optionen ::: Shell | ||||||||||||||||||||||||
mit | wohin | |||||||||||||||||||||||
Mit Ausnahme der Pfeiltasten sowie einiger Tastenkombinationen funktionieren die folgenden Befehle normalerweise nur im Befehlsmodus wie geschildert. | ||||||||||||||||||||||||
^ | Zum ersten Zeichen in der aktuellen Zeile | |||||||||||||||||||||||
0 | In die erste Spalte der aktuellen Zeile | |||||||||||||||||||||||
$ | Zum letzten Zeichen in der aktuellen Zeile | |||||||||||||||||||||||
[Pfeil links] h |
Um ein Zeichen nach links | |||||||||||||||||||||||
[backspace] |
wie h | |||||||||||||||||||||||
[Ctrl]H | wie h | |||||||||||||||||||||||
nh | Um n Zeichen nach links | |||||||||||||||||||||||
[Pfeil rechts] l |
Um ein Zeichen nach rechts | |||||||||||||||||||||||
nl | Um n Zeichen nach rechts | |||||||||||||||||||||||
k | Wenn möglich, in der gleichen Spalte um eine Zeile nach oben | |||||||||||||||||||||||
nk | Wenn möglich, in der gleichen Spalte um n Zeilen nach oben | |||||||||||||||||||||||
j | Wenn möglich, in der gleichen Spalte um eine Zeile nach unten | |||||||||||||||||||||||
<n>j | Wenn möglich, in der gleichen Spalte um n Zeilen nach unten | |||||||||||||||||||||||
[Ctrl]H | Entweder vorheriges Zeichen löschen oder wie h | |||||||||||||||||||||||
<n>
<n>[Leertaste] |
Betätigung der Leertaste mit vorheriger Angabe einer Zahl n bewirkt n-malige Ausführung der eingestellten Funktion. | |||||||||||||||||||||||
b | Zum Anfang des letzten Wortes | |||||||||||||||||||||||
B | Zum Anfang des letzten Wortes, welches durch ein Leerzeichen getrennt ist. | |||||||||||||||||||||||
e | Vorwärts zum Wortende | |||||||||||||||||||||||
w | Zum Anfang des nächsten Wortes | |||||||||||||||||||||||
W | Zum Anfang des nächsten Wortes, welches durch Leerzeichen getrennt ist. | |||||||||||||||||||||||
'' | Zurück zur Position der letzten Änderung | |||||||||||||||||||||||
n | Zur gleichen Spalte in der nächsten Zeile (wenn möglich) | |||||||||||||||||||||||
p | Zur gleichen Spalte in der vorherigen Zeile (wenn möglich) | |||||||||||||||||||||||
<n>G | Gehe zur n-ten Zeile der Datei | |||||||||||||||||||||||
G | Zur letzten Zeile in der Datei | |||||||||||||||||||||||
+ | Zum Anfang des Textes in der nächsten Zeile | |||||||||||||||||||||||
[Return] |
Zum Anfang des Textes in der nächsten Zeile, wie [+] | |||||||||||||||||||||||
- | Zum Anfang des Textes in der vorigen Zeile | |||||||||||||||||||||||
H | Home. Cursor in der oberen linken Ecke des Bildschirms positionieren. | |||||||||||||||||||||||
<n>H | Zur n-ten Zeile des Bildschirminhalts | |||||||||||||||||||||||
M | Middle. Zur mittleren Zeile des Bildschirminhalts | |||||||||||||||||||||||
L | Last. Zur letzten Zeile des Bildschirminhalts | |||||||||||||||||||||||
<n>L | Zur n-ten Zeile über dem unteren Bildschirminrand. | |||||||||||||||||||||||
( | Zum Anfang des vorhergenhenden Satzes; neue Zeile in Verbindung mit einer Zahl wird um die entsprechnede Anzahl von Sätzen zurückgesprungen | |||||||||||||||||||||||
) | Zum Ende des aktuellen Satzes; neue Zeile in Verbindung mit einer Zahl wird um die entsprechnede Anzahl von Sätzen vorwärts gesprungen | |||||||||||||||||||||||
{ | Zum Anfang eines Absatzes welcher beispielsweise durch eine Leerzeile oder [[ gekennzeichnet ist. Die zusätzliche Angabe einer Zahl vorab bestimmt, um wieviele Absätze gesprungen wird. | |||||||||||||||||||||||
} | Zum Ende eines Absatzes, ansonsten entstprechend [{]. | |||||||||||||||||||||||
[[ | Abschnittsbeginn, gekennzeichnet durch ^L oder { | |||||||||||||||||||||||
]] | Abschnittsende, gekennzeichnet durch ^L oder } | |||||||||||||||||||||||
Auf dem Bildschirm blättern | ||||||||||||||||||||||||
::: Aufrufen ::: Beenden ::: Speichern ::: Cursorbewegung | ||||||||||||||||||||||||
::: Editieren ::: Suchen / Ersetzen ::: Sonderzeichen ::: Optionen ::: Shell | ||||||||||||||||||||||||
mit | wohin | |||||||||||||||||||||||
Die folgenden Befehle funktionieren nur im Befehlsmodus. | ||||||||||||||||||||||||
[Ctrl]b,
[Ctrl]B |
Wenn möglich, eine Bildschirmseite rückwärts blättern. Dabei wird zur einfacheren Orientierung eine zweizeilige Überlappung des Inhalts eingerichtet. | |||||||||||||||||||||||
<n>[Ctrl] + [b],
<n>[Ctrl] + [B] |
Wenn möglich, um n Bildschirmseiten rückwärts blättern. Dabei wird zur einfacheren Orientierung eine zweizeilige Überlappung des Inhalts eingerichtet. | |||||||||||||||||||||||
[Ctrl]d,
[Ctrl]D |
Wenn möglich, eine halbe Bildschirmseite weiterblättern. | |||||||||||||||||||||||
<n>[Ctrl]d,
<n>[Ctrl]D |
Wenn möglich, um n Zeilen weiterblättern. Eine durch Angabe der Anzahl n vorgenommene Einstellung bleibt während der aktiven Session für [Ctrl]+[D] und [Ctrl]+[U] erhalten. | |||||||||||||||||||||||
[Ctrl]f
[Ctrl]F |
Wenn möglich, eine Bildschirmseite weiterblättern. Dabei wird zur einfacheren Orientierung eine zweizeilige Überlappung des Inhalts eingerichtet (wenn möglich). | |||||||||||||||||||||||
<n>[Ctrl]f
<n>[Ctrl]F |
Wenn möglich, um n Bildschirmseiten weiterblättern. Dabei wird zur einfacheren Orientierung eine zweizeilige Überlappung des Inhalts eingerichtet (wenn möglich). | |||||||||||||||||||||||
[Ctrl]J
[Ctrl]N |
Wenn möglich, den Cursor in der nächsten Zeile auf die gleiche Spaltenposition setzen. | |||||||||||||||||||||||
<n>[Ctrl]J | Wenn möglich, den Cursor um <n> Zeilen weiterbewegen und dort auf die gleiche Spaltenposition setzen. | |||||||||||||||||||||||
[Ctrl]M | Wenn möglich, den Cursor in der nächsten Zeile zum ersten Zeichen bewegen, welches kein Leerzeichen ist. | |||||||||||||||||||||||
[Ctrl]u
[Ctrl]U |
Wenn möglich, eine halbe Bildschirmseite zurückblättern. | |||||||||||||||||||||||
[Ctrl]Y | Wenn möglich, den Bildschirminhalt um eine Zeile zurück verschieben. | |||||||||||||||||||||||
z+ | Wenn möglich, den Bildschirminhalt um eine Seite weiterblättern. | |||||||||||||||||||||||
z- | Wenn möglich, den Bildschirminhalt um eine Seite zurück blättern. | |||||||||||||||||||||||
z. | Verschiebt den Bildschirminhalt so, dass der Cursor in der mittleren Bildschirmzeile steht. | |||||||||||||||||||||||
z | Die aktuelle Zeile wird zur ersten Zeile des Bildschirminhalts, gleichzeitig wird der Bildschirminhalt neu aufgebaut. | |||||||||||||||||||||||
[Ctrl]G | Statuszeile mit wichtigen Informationen bezüglich des aktuellen Bearbeitungsstandes aktivieren. | |||||||||||||||||||||||
<n>G | Wenn möglich, Cursor auf die <n>-te Zeile der Datei setzen. | |||||||||||||||||||||||
G | Cursor auf die letzte Zeile der Datei setzen. | |||||||||||||||||||||||
Manchmal kommt es vor, dass die Bildschirmausgabe reichlich verwirrt aussieht (speziell nach mehrmaligem Blättern). Abhilfe ist wie folgt möglich: | ||||||||||||||||||||||||
[Ctrl]l | Neuaufbau des Bildschirms. | |||||||||||||||||||||||
[Ctrl]r | Löschen und Neuaufbau des Bildschirms. | |||||||||||||||||||||||
z | Neuaufbau und Neupositionierung des Bildschirms (siehe oben). | |||||||||||||||||||||||
Editieren - Einfügen, löschen, formatieren, ... | ||||||||||||||||||||||||
::: Aufrufen ::: Beenden ::: Speichern ::: Cursorbewegung ::: Blättern | ||||||||||||||||||||||||
::: Suchen / Ersetzen ::: Sonderzeichen ::: Optionen ::: Shell | ||||||||||||||||||||||||
Einfügen und Formatieren (im Befehlsmodus) | ||||||||||||||||||||||||
a | append (anhängen). Nachfolgend eingegebene Zeichen werden rechts vom Cursor eingefügt. | |||||||||||||||||||||||
A
$a |
Nachfolgend eingegebene Zeichen werden am Ende der Zeile angehängt. | |||||||||||||||||||||||
i | insert (einfügen). Nachfolgend eingegebene Zeichen werden links vom Cursor eingefügt. | |||||||||||||||||||||||
I | Nachfolgend eingegebene Zeichen werden am Zeilenanfang eingefügt. | |||||||||||||||||||||||
J | Im Befehlsmodus bewirkt diese Taste das Anfügen der nächsten Zeile an die aktuelle (Zeilen verbinden). | |||||||||||||||||||||||
o | open (öffnen). Neue Zeile unterhalb der aktuellen Zeile einfügen, Cursor dort positionieren und Einfügemodus aktivieren. Nachfolgend eingegebene Zeichen werden in dieser neuen Zeile eingefügt. | |||||||||||||||||||||||
O | Wie [o], jedoch wird die neue Zeile oberhalb der aktuellen Zeile eingefügt. | |||||||||||||||||||||||
u | undo (rückgängig machen). Letzten Befehl rückgängig machen. | |||||||||||||||||||||||
U | Macht alle vorgenommenen Änderungen in der aktuellen Zeile rückgängig. | |||||||||||||||||||||||
.
(Punkt) |
Wiederholt die gesamte letzte Änderung ab der aktuellen Cursorposition. | |||||||||||||||||||||||
[Ctrl] | Die aktuelle Zeile wird an Cursorposition aufgetrennt. Der rechts vom Cursor stehende Zeilenteil wird in eine neue Zeile unterhalb der aktuellen eingefügt. | |||||||||||||||||||||||
[Ctrl]D | Automatisches Einrücken einschalten | |||||||||||||||||||||||
[Ctrl]D | Automatisches Einrücken für die aktuelle Zeile ausschalten. | |||||||||||||||||||||||
O[Ctrl]D | Automatisches Einrücken ausschalten | |||||||||||||||||||||||
< | Schiebe Text nach links. | |||||||||||||||||||||||
> | Schiebe Text nach rechts. | |||||||||||||||||||||||
Befehle im Einfügemodus | ||||||||||||||||||||||||
[Return] |
Neue Zeile eröffnen. | |||||||||||||||||||||||
[backspace] [Ctrl]H |
Das zuletzt eingegebene Zeichen löschen. | |||||||||||||||||||||||
[Ctrl]w | Das zuletzt eingegebene Wort löschen. | |||||||||||||||||||||||
[Ctrl]x | Die zuletzt eingegebene Zeile löschen. | |||||||||||||||||||||||
\ | Hebt die Befehlswirkung der gerade beschriebenen Korrekturzeichen auf. Dadurch werden sie wie Textzeichen behandelt. | |||||||||||||||||||||||
[Ctrl]v | Steuerzeichen direkt als Controlsequenzen in Datei einfügen. Die Nachahmung derartiger Zeichen durch [^] sowie des passenden Buchstabens (z.B. ^L) ist nicht möglich. | |||||||||||||||||||||||
[Esc] |
Beendet den Einfügemodus | |||||||||||||||||||||||
[Entf] |
Bricht den Einfügemodus ab | |||||||||||||||||||||||
Löschen von Zeichen | ||||||||||||||||||||||||
d | d ist die Einleitung eines Löschbefehls. Zusätzlich muss immer eine Bereichsangabe erfolgen. | |||||||||||||||||||||||
|
||||||||||||||||||||||||
x | Das Zeichen an aktueller Cursorposition löschen. | |||||||||||||||||||||||
X | Das Zeichen vor der aktuellen Cursorposition löschen (links davon). | |||||||||||||||||||||||
u | Macht den letzten Befehl rückgängig. | |||||||||||||||||||||||
U | Macht die Änderungen in der aktuellen Zeile rückgängig. | |||||||||||||||||||||||
.
(Punkt) |
Wiederholt die gesamte letzte Änderung ab der aktuellen Cursorposition. | |||||||||||||||||||||||
Kopieren von Zeichen | ||||||||||||||||||||||||
Innerhalb von vi gibt es 27 Puffer, von denen 26 mit den Buchstaben des Alphabets bezeichnet sind. Der nicht näher bezeichnete Puffer wird gewissermassen automatisch genutzt.
In diesen einen Puffer wird immer der gesamte zuletzt gelöschte Text (siehe Löschen) eingefügt. Mit dem Kommando u (undo, rückgängig) kann dieser Text wieder an die gleiche Stelle geschrieben werden bzw. mit den P-Kommandos an anderer Stelle eingefügt werden. |
||||||||||||||||||||||||
y | Kopiert das Zeichen unter dem Cursor in den automatischen Puffer. | |||||||||||||||||||||||
ny | Kopiert n + 1 Zeichen ab der aktuellen Cursorposition in den automatischen Puffer. | |||||||||||||||||||||||
yw | Kopiert das Wort, in welchem der Cursor steht, in den automatischen Puffer. Es kann anschliessend mit p/P an anderer Stelle eingefügt werden. | |||||||||||||||||||||||
yy
Y |
Kopiert die aktuelle Zeile in den automatischen Puffer. | |||||||||||||||||||||||
n yy | Kopiert, inklusive und ausgehend von der aktuellen Zeile, n Zeilen in den automatischen Puffer. | |||||||||||||||||||||||
y]] | Steht der Cursor auf einer geschweiften öffnenden Klammer ({), wird alles bis zur nächsten schliessenden geschweiften Klammer (}) in den Puffer kopiert. | |||||||||||||||||||||||
Yp | Verdoppelt die aktuelle Zeile. | |||||||||||||||||||||||
n Yp | Verdoppelt n Zeilen und fügt sie unterhalb der aktuellen Zeile ein. | |||||||||||||||||||||||
p | Fügt den Inhalt des automatischen Puffers unterhalb der aktuellen Zeile ein. | |||||||||||||||||||||||
P | Fügt den Inhalt des automatischen Puffers oberhalb der aktuellen Zeile ein. | |||||||||||||||||||||||
Nutzung der 26 anderen Puffer
Diese Puffer sind mit alphabetischen Zeichen (a bis z) gekennzeichnet. Solange die aktuelle Session des Editors nicht mit :q beendet oder mit :x abgebrochen wird, geht der Pufferinhalt nicht verloren (auch nicht bei hinzuladen weiterer Dateien mit :e <Datei>). Die Ansprache der Puffer geschieht im Befehlsmodus durch z.B. "a, "b usw.. |
||||||||||||||||||||||||
"anyy | n Zeilen in Puffer a kopieren | |||||||||||||||||||||||
"cnw | n Worte in Puffer c kopieren | |||||||||||||||||||||||
"tp | Inhalt des Puffers t unterhalb der aktuellen Zeile einfügen | |||||||||||||||||||||||
"zP | Inhalt des Puffers z oberhalb der aktuellen Zeile einfügen | |||||||||||||||||||||||
Zusätzlich zu den Puffern gibt es noch neun Register, in welchen die letzten neun vorgenommenen Änderungen gespeichert werden. Durch diese Speicherung ist es möglich, sie durch den Wiederherstellungs-(Recover-)Mechanismus wieder zu laden. Beim Wechsel der editierten Datei (auch innerhalb einer Session) geht ihr Inhalt verloren. Die Bezeichnung der Register erfolgt mit den Ziffern 1 bis 9, wobei sich die zuletzt gelöschte Zeihenfolge im Register 1 befindet. Die vorher gespeicherten Daten werden um jeweils ein Register "verschoben". | ||||||||||||||||||||||||
Beispiel:
Zunächst wurde das Wort Zeichen aus der Datei gelöscht und dabei vom Editor im Register 1 gespeichert. Anschliessend wird das Wort Stern gelöscht. Stern ist nun im Register 1, durch die Verschiebung ist Zeichen im Register 2. Es können nur neun Zeichenfolgen in den Registern gespeichert werden, weshalb nach Löschen von mehr Daten die zuerst gelöschten Daten verloren gehen (es gibt kein Register 10). Anwendungsbeispiele in Verbindung mit der Kopierfunktion: |
||||||||||||||||||||||||
"1p | Eine neue Zeile unterhalb der aktuellen Zeile erzeugen und den Inhalt von Register 1 einfügen. Die angegebene Ziffer bestimmt das gewählte Register (mit "5p" würde der Inhalt von Register 5 übertragen werden). | |||||||||||||||||||||||
"1pu | Alle Registerinhalte auf dem Bildschirm anzeigen lassen und anschliessend wieder löschen. | |||||||||||||||||||||||
Diese Kommandofolge scheint zunächst nicht sonderlich nutzbringend zu sein. Tatsächlich wird der Nutzen erst nach Eingabe des Punkt-(.)Befehls sichtbar, da mit jedem eingegebenen Punkt entweder der gerade angezeigte Inhalt gelöscht oder der Registerzähler um eins erhöht und der Inhalt des nächsten Registers angezeigt wird. | ||||||||||||||||||||||||
Gleichzeitiges bearbeiten mehrerer Dateien | ||||||||||||||||||||||||
:e <Datei> | In der aktiven Editor-Session wird die angegebene Datei in den Arbeitsspeicher geladen, wenn die vorher bearbeitete Datei keine Änderung erfuhr oder bereits mit :w gespeichert wurde. | |||||||||||||||||||||||
:e!<Datei> | Unbedingt Datei laden. Nicht gespeicherte Änderungen in der bisher bearbeiteten Datei gehen verloren. | |||||||||||||||||||||||
:e# | Die Datei laden, welche in der laufenden Session vor der derzeit aktuellen Datei bearbeitet wurde. | |||||||||||||||||||||||
:e +<Datei> | Benannte Datei laden, Cursor an deren Ende positionieren. | |||||||||||||||||||||||
:e +<n> <Datei> | Benannte Datei laden, Bildschirminhalt beginnt bei Zeile n. | |||||||||||||||||||||||
:e +/<Zeichenfolge> <Datei> | Benannte Datei laden, Darstellung wird um Zeichenfolge herum aufgebaut (wenn möglich erscheint Zeichenfolge in Bildschirmmitte). | |||||||||||||||||||||||
:e! | Das Original der derzeit bearbeiteten Datei nochmals laden. Vorgenommene Änderungen werden verworfen. | |||||||||||||||||||||||
:n | Die nächste, beim Aufruf des Editors auf der Kommandozeile angegebene Datei laden. Sollte die bisher bearbeitete Datei geändert worden, aber noch nicht mit :w gespeichert worden sein, erscheint eine Fehlermeldung. | |||||||||||||||||||||||
:n! | Ohne Rücksicht auf vorgenommene Änderungen in der momentan aktuellen Datei die nächste, beim Aufruf des Editors auf der Kommandozeile angegebene Datei laden. In der aktuellen Datei gehen etwaige Änderungen verloren. | |||||||||||||||||||||||
:r <Datei> | Inhalt der benannten Datei unterhalb der aktuellen Zeile einfügen. | |||||||||||||||||||||||
Suchen, Ersetzen | ||||||||||||||||||||||||
::: Aufrufen ::: Beenden ::: Speichern ::: Cursorbewegung ::: Blättern | ||||||||||||||||||||||||
::: Editieren ::: Sonderzeichen ::: Optionen ::: Shell | ||||||||||||||||||||||||
Sonderzeichen in zu suchenden Zeichenfolgen sind mit \ als normaler Text zu deklarieren. Andernfalls werden sie ihrer Bedeutung entsprechend ausgewertet.
Viele vi-Versionen bieten die Möglichkeit, vollständige reguläre Ausdrücke (regular expressions) bei den Such- und Ersetzungsfunktionen zu nutzen. Darauf wird hier nicht weiter eingegangen, da es den Rahmen schlichtweg sprengen würde. |
||||||||||||||||||||||||
Suchen | ||||||||||||||||||||||||
/<Begriff> |
Den Dateiinhalt in Vorwärtsrichtung nach dem nächsten Auftreten von Begriff durchsuchen. Sollte die Option Ringsuche (ws) aktiv sein, dann wird die Suche ggf. vom Dateianfang ausgehend fortgesetzt.
Wird Begriff nicht gefunden, so erscheint ein entsprechender Kommentar. |
|||||||||||||||||||||||
/ | Den letzten Befehl zur Vorwärtssuche wiederholen. | |||||||||||||||||||||||
?<Begriff> |
Den Dateiinhalt in Rückwärtsrichtung nach dem nächsten Auftreten von Begriff durchsuchen. Sollte die Option Ringsuche (ws) aktiv sein, dann wird die Suche ggf. vom Dateiende ausgehend fortgesetzt.
Wird Begriff nicht gefunden, so erscheint ein entsprechender Kommentar. |
|||||||||||||||||||||||
? | Den letzten Befehl zur Rückwärtssuche wiederholen. | |||||||||||||||||||||||
n | Den letzten Suchbefehl wiederholen (unabhängig von Suchrichtung). | |||||||||||||||||||||||
<n>f<Zeichen> |
In der aktuellen Zeile vorwärts nach Zeichen Zeichen suchen. Der Cursor wird auf dem gefundenen Zeichen positioniert.
Die Angabe einer Zahl n ist optional (keine Angabe = erstes Auftreten). Durch Angabe von n wird bestimmt, wie oft gesucht werden soll. |
|||||||||||||||||||||||
<n>F<Zeichen> | Wie f<Zeichen>, jedoch rückwärts. | |||||||||||||||||||||||
<n>t<Zeichen> | Wie f<Zeichen>, der Cursor wird jedoch vor dem gefundenen Zeichen positioniert. | |||||||||||||||||||||||
<n>T<Zeichen> | Wie F<Zeichen>, der Cursor wird jedoch vor dem gefundenen Zeichen positioniert. | |||||||||||||||||||||||
; | Wiederholung des letzten f-, F-, t- oder T-Befehls. | |||||||||||||||||||||||
, | Wiederholung des letzten f-, F-, t- oder T-Befehls, wobei die Suchrichtung des ursprünglichen Befehls umgekehrt (invertiert) wird. | |||||||||||||||||||||||
^ | Steht in Suchbegriffen für Zeilenanfang. | |||||||||||||||||||||||
$ | Steht in Suchbegriffen für Zeilenende oder, wenn $ ohne weitere Zeichen als Suchbegriff angegeben wird, für Dateiende. | |||||||||||||||||||||||
<n>| | Positioniere den Cursor in Spalte n. Die Angabe der Zahl n ist zwingend erforderlich (mandatory). | |||||||||||||||||||||||
[[ | Suche nach der nächsten öffnenden geschweiften Klammer ({). | |||||||||||||||||||||||
]] | Suche nach der nächsten schliessenden geschweiften Klammer (}). | |||||||||||||||||||||||
Suchen und Ersetzen | ||||||||||||||||||||||||
:s/<alt>/<neu>/ | Suche einmal in der aktuellen Zeile nach dem ersten Auftreten von ><>alt> und ersetze dort <alt> durch <neu>. | |||||||||||||||||||||||
:s/<alt>/<neu>/g | Suche in der aktuellen Zeile nach <alt> und ersetze alle Vorkommen von <alt> durch <neu> (g = global). | |||||||||||||||||||||||
:gs/<alt>/<neu>/g | Suche in der aktuellen Datei nach <alt> und ersetze alle Vorkommen von <alt> durch <neu> (g = global). | |||||||||||||||||||||||
:<n>s/<alt>/<neu>/ | Suche in der <n>-ten Zeile nach dem ersten Auftreten von <alt> und ersetze dort <alt> durch <neu>. | |||||||||||||||||||||||
:<m>,<n>s/<alt>/<neu>/ | Suche einmal in den Zeilen <m> bis <n> nach dem ersten Auftreten von <alt> und ersetze dort <alt> durch <neu> | |||||||||||||||||||||||
:1,$s/<alt>/<neu>/g |
Suche in der aktuellen Datei nach <alt> und ersetze alle Vorkommen von <alt> durch <neu> (g = global).
Die Suche beginnt in Zeile 1 und geht bis zum Dateiende ($). Wegen g (= global) werden alle gefundenen Elemente ersetzt. |
|||||||||||||||||||||||
:s/<alt>// | Suche einmal in der aktuellen Zeile nach dem ersten Auftreten von <alt> und lösche es (ersetze es durch nichts). Sollen alle Vorkommen von <alt> in der aktuellen Zeile gelöscht werden, so ist zusätzlich g am Ende des Befehls anzugeben. | |||||||||||||||||||||||
& | Wiederhole den letzten Ersetzungsbefehl vom Typ :s.... | |||||||||||||||||||||||
Sonderzeichen | ||||||||||||||||||||||||
::: Aufrufen ::: Beenden ::: Speichern ::: Cursorbewegung ::: Blättern | ||||||||||||||||||||||||
::: Editieren ::: Suchen / Ersetzen ::: Optionen ::: Shell | ||||||||||||||||||||||||
Zeichen mit besonderer Bedeutung | ||||||||||||||||||||||||
% | Im Befehlsmodus versteht das System darunter den Inhalt des Puffers der gerade bearbeiteten Datei (z.B.: :!% %.org). | |||||||||||||||||||||||
# | Im Befehlsmodus wird dieses Zeichen durch den zuletzt in einem Kommando verwendeten Dateinamen ersetzt. | |||||||||||||||||||||||
#% | Dient zum hin- und herschalten zwischen zwei gleichzeitig in Bearbeitung befindlichen Dateien. | |||||||||||||||||||||||
~ |
Dient auf dem Bildschirm als Symbol zur Anzeige von Zeilen, in denen die bearbeitete Datei keinen Text enthält.
Dieser Fall kann beispielsweise auftreten, wenn bei der Bearbeitung Zeilen gelöscht, der Bildschirm jedoch nicht aktualisiert wurde. |
|||||||||||||||||||||||
:l | Im Befehlsmodus bewirkt es, dass alle in der aktuellen Zeile befindlichen Sonderzeichen (z.B. $ für Zeilenende) dargestellt werden. Bei mehr als 72 Zeichen in der Zeile wird diese umbrochen und der Umbruch am Zeilenende mit \ markiert. Control-Zeichen werden in der Form ^L dargestellt (^ steht fü [Ctrl]). Es handelt sich hierbei um echte Control-Sequenzen! | |||||||||||||||||||||||
Optionen, Einstellungen | ||||||||||||||||||||||||
::: Aufrufen ::: Beenden ::: Speichern ::: Cursorbewegung ::: Blättern | ||||||||||||||||||||||||
::: Editieren ::: Suchen / Ersetzen ::: Sonderzeichen ::: Shell | ||||||||||||||||||||||||
Parameter zum Anpassen der Einstellungen | ||||||||||||||||||||||||
Einstellungen können sowohl auf Systemebene (wirken sofort beim Aufruf des Editors) oder während des laufenden Betriebs vorgenommen werden.
Beim Aufruf des Editors wird die Environment-Variable EXINIT geprüft und darin hinterlegte Parameter übernommen. Der entsprechende Eintrag muss in der profile-Datei der vom Benutzer verwendeten Shell (z.B. $HOME/.profile bei sh, $HOME/.login bei csh) stehen, die beim Login gelesen wird. Zu beachten ist, dass bei Verwendung mehrerer profile-Dateien, welche beim Login nacheinander abgearbeitet werden, der letzte Eintrag gültig ist (vorherige Einträge überschreibt). Die Syntax zum Einschalten einer Option bei Verwendung von sh lautet EXINIT="set nu list";export EXINIT Zum Ausschalten einer Option lautet sie bei Verwendung von sh EXINIT="set nonu nolist";export EXINIT Bei Verwendung von csh gilt entsprechend setenv EXINIT "set nu list" beziehungsweise setenv EXINIT "set nonu nolist" Das bedeutet, dass zum Einschalten die Option genannt wird, zum Ausschalten dieser Nennung no vorangestellt wird. Im laufenden Betrieb muss mit in in den Befehlsmodus gewechselt werden. Die Syntax lautet dann :set <OPTION> [=Zeichen] Den Zusatz Zeichen benötigt man bei einigen Optionen, welche zusätzliche Parameter zulassen bzw. wahlweise Änderungen zulassen (z.B. ht, ts usw.). Änderungen, welche im laufenden Betrieb vorgenommen werden, gelten nur für die Dauer der aktiven Session. :se <OPTION> zeigt an, ob die genannte Option aktiviert ist. :se all zeigt die aktuellen Einstellungen aller Optionen an. |
||||||||||||||||||||||||
Option | Beschreibung | default | ||||||||||||||||||||||
se nolist | Macht die List-Darstellung rückgängig. | |||||||||||||||||||||||
ai | Im Einfügemodus wird bei den Kommandos a, c, und i jede Zeile entsprechend der vorherigen mit führenden Leerzeichen versehen (eingerückt). | noai | ||||||||||||||||||||||
ap | Der Bildschirm wird automatisch neu aufgebaut, wenn eine Zeile gelöscht oder eingefügt wird. | ap | ||||||||||||||||||||||
aw | Es wird immer der Arbeitsspeicherinhalt (Puffer) in die Originaldatei geschrieben, wenn der Editor verlassen oder eine neue Datei zur Bearbeitung geöffnet wird. | noaw | ||||||||||||||||||||||
bf | Sämtliche Control-Zeichen werden aus der Datei entfernt. | nobf | ||||||||||||||||||||||
dir | Verzeichnis, in welchem die Arbeitskopie bearbeiteter Dateien angelegt wird. | dir=/tmp | ||||||||||||||||||||||
eb | Bei erkannten Bedienungsfehlern gibt der Editor zusätzlich ein akustisches Signal (^). | noeb | ||||||||||||||||||||||
ht | Tabulatorabstände im Terminal. | ht=8 | ||||||||||||||||||||||
ic | Bei Suchvorgängen nicht auf Groß-/Kleinschreibung achten. | noic | ||||||||||||||||||||||
lisp | Einrückungen nach LISP-Regeln vornehmen, Klammern nach entsprechenden Vorschriften behandeln. | nolisp | ||||||||||||||||||||||
list | Dateiinhalt mit allen Sonderzeichen anzeigen. $ steht für Zeilenende, ^I für Tabulator. | nolist | ||||||||||||||||||||||
magic | Sonderzeichen werden entsprechend berücksichtigt und nicht als reine Textzeichen gewertet. | magic | ||||||||||||||||||||||
mesg | Es können Meldungen, die nicht vom Editor selbst stammen (z.B. mail), auf dem Bildschirm angezeigt werden. Nach setzen von nomesg können nur noch Meldungen angezeigt werden, die direkt vom Editor stammen. | mesg | ||||||||||||||||||||||
nu | Zeilennummern werden angezeigt (kann wegen längerer Zeilen zu Zeilenumbrüchen führen). | nonu | ||||||||||||||||||||||
para | Definition der Absatzgrenzen, die bei Befehlen mit geschweiften Klammern ({}) eingerichtet werden sollen. |
para =IPLPPPQPP Llbp |
||||||||||||||||||||||
prompt | Das Zeichen erscheint bei mit : aufgerufenen Kommandos als Prompt auf dem Bildschirm. | prompt | ||||||||||||||||||||||
redraw | Neuaufbau der Zeile, sobald ein Zeichen eingegeben wird. | noredraw | ||||||||||||||||||||||
remap | Rekursive Abarbeitung von Makros | remap | ||||||||||||||||||||||
report | Meldung ausgeben, wenn mehr als die angegebene Anzahl Zeilen durch ein Änderungskommando verändert werden. | report=5 | ||||||||||||||||||||||
scroll | Scroll-Bereich der Scroll-Befehle definieren. | scroll=1/2 | ||||||||||||||||||||||
sections | Definition der Grenzen bei den Befehlen [[ und ]]. |
sections =SHNHH HU |
||||||||||||||||||||||
sh | Festlegung, welche Shell beim !-Kommando genutzt wird. | sh=/bin/sh | ||||||||||||||||||||||
sw | Schrittweite des Tabulators einstellen. Gleichzeitig legt dieser Eintrag den Richtwert für den Sprung des Cursors bei den Befehlen < und > fest, wenn diese ohne vorangestellte Zahl eingegeben werden (z.B. 3<). Die Definition gilt auch bei der Option ai und [Strg]D-Befehlen im Einfügemodus | sw=8 | ||||||||||||||||||||||
sm | Anzeigehilfe beim Editieren von Programmen: Bei Eingabe von Klammern des Typs ) oder } wird die als zugehörig erkannte, öffnende Klammer für ca. 1 Sekunde hell unterlegt dargestellt. | nosm | ||||||||||||||||||||||
ts | Tabulatorposition in der Zeile festlegen. | ts=8 | ||||||||||||||||||||||
term | Der Inhalt der Environment-Variablen TERM wird zur Definition des Terminaltyps herangezogen. Der zu diesem Namen gehörende Eintrag wird in /etc/termcap gesucht. Sollte kein passender Eintrag gefunden werden, dann schaltet der Editor in einen Einzeilenmodus, welcher keine spezielle Terminalanpassung benötigt. | TERM | ||||||||||||||||||||||
terse | Fehlermeldungen in Kurzform anzeigen. | noterse | ||||||||||||||||||||||
warn | Fehlermeldung anzeigen, wenn eine geänderte Datei vor Eingabe eines !-Befehls nicht gespeichert wurde. Der Inhalt des Arbeitsspeichers wird nicht geändert | warn | ||||||||||||||||||||||
window, w300
w1200, w9600 |
In Abhängigkeit von der Baudrate die Anzahl der Zeilen pro Bildschirmseite auf 8, 16 oder die Zahl der im System selbst (nicht im Editor) festgelegten Anzahl von Bildschirmzeilen einstellen. | meist >= 1200 | ||||||||||||||||||||||
ws | In den Such-Modi / und ? die Ringsuche über Dateianfang bzw. -ende hinweg aktivieren. | ws | ||||||||||||||||||||||
wm | Akustisches Signal ausgeben, wenn hinter Spalte wm noch ein Zeichen eingefügt werden soll. | wm=0 | ||||||||||||||||||||||
wa | Ohne vorherige Prüfung in Dateien schreiben. | nowa | ||||||||||||||||||||||
Shell-Kommandos | ||||||||||||||||||||||||
::: Aufrufen ::: Beenden ::: Speichern ::: Cursorbewegung ::: Blättern | ||||||||||||||||||||||||
::: Editieren ::: Suchen / Ersetzen ::: Sonderzeichen ::: Optionen | ||||||||||||||||||||||||
:!Befehl | Befehl ausführen und entsprechende Meldung ausgeben (die Meldung wird nicht in die bearbeitete Datei übernommen). Der Bildschirminhalt muss mit [Ctrl]l wieder hergestellt werden. | |||||||||||||||||||||||
:!! | Wiederholt das zuletzt eingegebene Unix-Kommando. | |||||||||||||||||||||||
:sh :csh> | Neue (C-)Shell starten, in welcher ohne Einschränkung gearbeitet werden kann. Der Editor läuft so lange im Hintergrund, bis die neu gestartete Shell mit [Ctrl]D oder [Ctrl]Z beendet wird. | |||||||||||||||||||||||
:r !Befehl | Den Rückgabewert des Shell-Kommandos Befehl an aktueller Stelle in Datei einfügen. | |||||||||||||||||||||||
!Befehl | Der eingegebene Befehl ersetzt den ursprünglichen Pufferinhalt der gerade bearbeiteten Datei. |