Der Standard Editor vi
Der vi ist der Standardeditor in der Unixwelt. Er ist in jedem Unix-Derivat enthalten. Der Editor hat zwar den schlechten Ruf umständlich zu bedienen zu sein, ist jedoch sehr leistungsfähig und systemübergreifend verfügbar. Beim vi handelt es sich um einen rein textorientierten Editor, der mittels eigener Kommandos gesteuert wird.
Der Editor VIM ist eine weitere Verbesserung von VI und leichter zu bedienen. Und unter Ubuntu/Debian mit "apt-get install vim" zu installieren.
Starten des Editors:
Der Editorstart erfolgt einfach durch die Eingabe des Kommandos vi mit dem Dateinamen der zu editierenden Datei als Parameter. Beispiel:
vi sux.txt
Die Betriebsmodi des vi:
Ein Umstand, der dem vi den Ruf der komplizierten Bedienbarkeit zugetragen hat, sind die unterschiedlichen Betriebsmodi des Editors. Genauer gesagt verfügt der vi über drei Betriebsmodi:
Kommandomodus:
Innerhalb dieses Modus werden die eingegebenen Zeichen direkt als Befehle des Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen (Prompt) noch ein Echo (Ausgabe). Der Kommandomodus ist der Modus, in dem sich der vi direkt nach seinem Start befindet.
Zeilenmodus oder Exmodus:
Dieser Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen, nämlich dem Doppelpunkt (:). Das Prompt wird ebenso wie die Befehlsausgaben in der Statuszeile angezeigt.
Eingabemodus:
Der Eingabemodus ist derjenige, in welchem der zu bearbeitende Text bearbeitet werden kann. Alle hier eingegebenen Zeichen werden als Text für die aktuelle Datei interpretiert. Zwischen den unterschiedlichen Modi kann jederzeit gewechselt werden. Von Kommandomodus gelangen Sie durch mehere Wege in den Eingabemodus. Man kann durch folgende Aktionen wechslen
i | Text vor der aktuellen Cursorposition einfügen |
I | Text am Zeilenanfang einfügen |
a | Text hinter der aktuellen Cursorposition einfügen |
A | Text am Zeilenende einfügen |
o | Unterhalb der aktuellen Zeile eine neue Zeile einfügen |
O | Oberhalb der aktuellen Zeile eine neue Zeile einfügen |
Durch das Drücken der ESC - Taste gelangt man in den Kommandomodus zurück.
Im Kommandomodus können Sie durch den Text navigieren und auch den Text selbst bearbeiten, z.B ausschneiden, kopieren usw. Dazu sind einige Kommandos nötig, von denen die wichtigsten im Folgenden erläutert werden:
xinux@zero:/$ vi iwas.txt
Benutzen des Kommandomodus
Steuerung des Cursors durch den Text
Mittels folgender Kommandos bewegt sich der Cursor durch den Text:
h | Cursor ein Zeichen nach links |
l | Cursor ein Zeichen nach rechts |
k | Cursor eine Zeile nach oben |
j | Cursor eine Zeile nach unten |
w | Cursor ein Wort nach rechts |
b | Cursor ein Wort nach links |
Alle diese Kommandos können mit einem vorgestellten Wiederholungsfaktor arbeiten. Der Befehl 3w verschiebt demnach den Cursor um 3 Wörter nach rechts.
Angaben zur Positionierung
STRG+U | 1⁄2 Bildschirmseite nach oben |
STRG+D | 1⁄2 Bildschirmseite nach unten |
STRG+B | 1 Bildschirmseite nach oben |
STRG+F | 1 Bildschirmseite nach unten |
/Ausdruck | Sucht den Ausdruck (vorwärts) Weitersuchen mit n , N |
?Ausdruck | Sucht den Ausdurck (rückwärts) Weitersuchen mit n , N |
0 | Zeilenanfang |
$ | Zeilenende |
w | Nächstes Wort |
b | Vorheriges Wort |
fc | Auf das Zeichen c springen. c steht für ein beliebiges Zeichen |
G | Letzte Zeile der Datei |
nG | n-te Zeile der Datei |
H | Anfang der Bildschirmseite |
L | Ende der Bildschirmseite |
Befehle zur Textbearbeitung -> Was soll geschehen
x | Löscht Zeichen |
dd | Zeile löschen und in den Puffer laden |
c | Ändern |
y | In den Puffer laden |
Weitere wichtige Befehle:
p | Aus dem Puffer einfügen |
u | Undo, macht den letzten Befehl rückgängig |
STRG+r | Redo, macht den letzten Undo rückgängig |
Zeilen- oder Exmodus
Wie schon erwähnt wird der Zeilen oder Exmodus durch einen : eingeleitet. Es folgen einige Beispiele.
Befehle zum Speichern und Beenden:
:w Schreibt Datei :w Datei2 Schreibt eine Kopie in Datei2 :w ! Schreibt Datei (übergehe Schreibschutz) :w ! Datei2 Schreibt eine Kopie in Datei2 (übergehe Schreibschutz) :q Schließe Datei :q! Schließe Datei (verwerfe Änderungen) :wq Schreibe Datei und beende Editor :wq! Schreibe Datei und beende Editor (übergehe Schreibschutz) :q! Schließe Datei (verwerfe Änderungen) :h Hilfe anzeigen, durch drücken von :q Beenden der Hilfe :e Datei3 Editiere Datei3 :e # Editere vorhergehende Datei :1,3co9 Kopiere von der ersten bis zu dritten Zeile und füge den Inhalt unterhalb der neunte Zeile ein.
Interaktionen mit Unix:
:r Datei4 Fügt Inhalt der Datei4 nach dem Cursor ein :r ! Befehl Fügt Ausgabe des Befehls nach dem Cursor ein :! Befehl Führt den Befehl aus :sh Starte Subshell -> mit exit kehrt man wieder zurück Eingabemodus zurück
Ersetzen von Textteilen
Die grundsätzliche Syntax lautet:
:[Zeilennummer,Zeilennummer]s/Muster/Ersetzung/[gc]
:s/worf/kirn/ der erste worf wird in der aktuellen Zeile durch kirn ersetzt :1,9s/worf/kirn/g von der 1. bis zur 9. Zeile werden alle worf durch kirn ersetzt :1,$s/worf/kirn/ von der ersten bis zur letzten Zeile ersetze ersten worf durch kirn :.,$s/worf/kirn/g von der aktuellen bis zur letzten Zeile ersetze alle worf durch kirn :1,.s/worf/kirn/c von der 1. bis zur aktuellen Zeile ersetze worf durch kirn, frage aber nach :1,$s/^worf/kirn/ von der ersten bis zur letzten Zeile ersetze worf am Zeilenanfang durch kirn :4,$s/worf$/kirn/ von der 4. bis zur letzten Zeile ersetze worf am Zeilenende durch kirn :1,$s/^#// lösche alle Kommentarzeichen :1,$s/^.orf/kirn/ ersetze alles was am Zeilenanfang ein beliebiges Zeichen hat gefolgt von einem orf durch kirn :1,$s/^[A-Z]orf/kirn/g suche nach einem Großbuchstaben am Anfang der Zeile gefolgt von einem orf und ersetze durch kirn :1,$s/^M[ae][iy]e*r/kirn/ suche alles, was am Anfang der Zeile ein großes M enthält, gefolgt von einem a oder e , gefolgt von einem i oder y , gefolgt von einem e , welches 0 oder N mal vorkommen kann, gefolgt von einem r und ersetze es durch kirn