Vim: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 2: Zeile 2:
== Einführung ==
== Einführung ==


[[Image:Grafik2.png|right|top]]
[[Image:Grafik2.png]]


Der Editor vi (visual) ist ein bildschirmorientierter Editor, d.h. der Text ist in seiner aktuellen Version auf dem Bildschirm zu sehen. Es erfolgt hier nur ein Überblick der Möglichkeiten des vi.  
Der Editor vi (visual) ist ein bildschirmorientierter Editor, d.h. der Text ist in seiner aktuellen Version auf dem Bildschirm zu sehen. Es erfolgt hier nur ein Überblick der Möglichkeiten des vi.  


[[Image:Grafik1.png|right|top]]
[[Image:Grafik1.png]]


Nach dem Aufruf des vi befindet sich der Benutzer im Kommandomodus. Die Arbeit spielt sich wie beim ed immer in zwei Ebenen ab: * Kommandomodus
Nach dem Aufruf des vi befindet sich der Benutzer im Kommandomodus. Die Arbeit spielt sich wie beim ed immer in zwei Ebenen ab: * Kommandomodus
Zeile 18: Zeile 18:
* Einfügen von Text  
* Einfügen von Text  
* Überschreiben vorhandener Textpassagen
* Überschreiben vorhandener Textpassagen


Das Umschalten zwischen den Modi erfolgt mit der [ESC]-Taste. Die Handhabung des Kommandomodus des vi macht die Bedienung für den Anfänger etwas ungewohnt. Die Cursorpositionierung erfolgt mit verschiedenen Tasten, für die Eingabe von Dateibefehlen oder anderen Funktionen (z. B. Suchen/ersetzen) ist die Eingabe eines Doppelpunktes nötig. Man befindet sich dann in ex-Modus, der ähnliche Eigenschaften hat, wie der Editor ed.  
Das Umschalten zwischen den Modi erfolgt mit der [ESC]-Taste. Die Handhabung des Kommandomodus des vi macht die Bedienung für den Anfänger etwas ungewohnt. Die Cursorpositionierung erfolgt mit verschiedenen Tasten, für die Eingabe von Dateibefehlen oder anderen Funktionen (z. B. Suchen/ersetzen) ist die Eingabe eines Doppelpunktes nötig. Man befindet sich dann in ex-Modus, der ähnliche Eigenschaften hat, wie der Editor ed.  
Zeile 26: Zeile 24:


Programmaufruf:  
Programmaufruf:  
'''vi [Dateiname]'''
'''vi [Dateiname]'''


[[Image:Grafik4.png|right|top]]
[[Image:Grafik4.png]]


Ist die Datei vorhanden, wird sie in den Editorpuffer geladen, andernfalls wird sie neu angelegt.  
Ist die Datei vorhanden, wird sie in den Editorpuffer geladen, andernfalls wird sie neu angelegt.  


Wird der vi ohne die Angabe eines Dateinamens gestartet, ist der Bildschirm auf der linken Seite mit Tilden (~) gefüllt. Jede leere Zeile hinter dem Ende der Datei wird auf diese Art dargestellt.  
Wird der vi ohne die Angabe eines Dateinamens gestartet, ist der Bildschirm auf der linken Seite mit Tilden (~) gefüllt. Jede leere Zeile hinter dem Ende der Datei wird auf diese Art dargestellt.  


Am unteren Ende des Bildschirms wird der Dateiname anzeigt, falls eine existierende Datei angegeben wurde. Die Größe der Datei wird ebenfalls angezeigt .
Am unteren Ende des Bildschirms wird der Dateiname anzeigt, falls eine existierende Datei angegeben wurde. Die Größe der Datei wird ebenfalls angezeigt .


[[Image:Grafik5.png]]


[[Image:Grafik5.png|right|top]]
Wenn diese Informationen nicht angezeigt werden, könnte es sein, dass der Terminaltyp falsch gesetzt ist. Dann sollte der vi mit :q! und [ENTER] verlassen und der Terminaltyp korrekt eingestellt werden.
 
Wenn diese Informationen nicht angezeigt werden, könnte es sein, dass der Terminaltyp falsch gesetzt ist. Dann sollte der vi mit <tt>:q! </tt>und [ENTER] verlassen und der Terminaltyp korrekt eingestellt werden.


Falls die angegebene Datei nicht existiert, wird auf folgende Art angezeigt, dass es sich um eine neue Datei handelt:  
Falls die angegebene Datei nicht existiert, wird auf folgende Art angezeigt, dass es sich um eine neue Datei handelt:  
Zeile 49: Zeile 45:


=== Aufrufparameter ===
=== Aufrufparameter ===
{| style="border-spacing:0;margin:auto;width:17.501cm;"
{|  
|-
|-
| style="border-top:2.5pt solid #000000;border-bottom:2.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''-r '''</tt>
| | '''-r '''
| style="border-top:2.5pt solid #000000;border-bottom:2.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | (recovery) Stellt die letzte Datei nach einem Absturz wieder her
| | (recovery) Stellt die letzte Datei nach einem Absturz wieder her
|-
|-
|}
|}


=== Hilfen ===
=== Hilfen ===
{| style="border-spacing:0;margin:auto;width:17.501cm;"
{|  
|-
|-
| style="background-color:transparent;border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''man vi'''</tt>
| | '''man vi'''
| style="background-color:transparent;border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Manualpage von <tt>'''vi'''</tt> aufrufen
| | Manualpage von '''vi''' aufrufen
|-
|-
| style="background-color:transparent;border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>''':h <Stichwort>'''</tt>
| | ''':h <Stichwort>'''
| style="background-color:transparent;border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Hilfe aufrufen (mit :q verlassen)
| | Hilfe aufrufen (mit :q verlassen)
|-
|-
| style="background-color:transparent;border-top:none;border-bottom:2.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''vimtutor'''</tt>
| | '''vimtutor'''
| style="background-color:transparent;border-top:none;border-bottom:2.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Lernprogramm  
| | Lernprogramm  
|-
|-
|}
|}
<div style="text-align:center;">[[Image:Grafik3.png]]</div>
[[Image:Grafik3.png]]


== Cursorpositionierung ==
== Cursorpositionierung ==
Normalerweise ist der <tt>'''vi'''</tt> an die Pfeiltasten der Tastatur richtig angepasst. Daneben gibt es noch folgende Möglichkeiten (Auswahl):  
Normalerweise ist der '''vi''' an die Pfeiltasten der Tastatur richtig angepasst. Daneben gibt es noch folgende Möglichkeiten (Auswahl):  
{| style="border-spacing:0;margin:auto;width:17.501cm;"
{|  
|-
|-
| style="border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''h '''</tt>
| | '''h '''
| style="border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Zeichen links (auch Backspace)
| | Zeichen links (auch Backspace)
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''l '''</tt>
| | '''l '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Zeichen rechts (auch blank)
| | Zeichen rechts (auch blank)
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''k '''</tt>
| | '''k '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Zeile höher
| | Zeile höher
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''j '''</tt>
| | '''j '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Zeile tiefer
| | Zeile tiefer
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''b '''</tt>
| | '''b '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Wortanfang
| | Wortanfang
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''e '''</tt>
| | '''e '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Wortende
| | Wortende
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''w '''</tt>
| | '''w '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Anfang nächstes Wort
| | Anfang nächstes Wort
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''H '''</tt>
| | '''H '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Anfang erste Zeile des Bildschirms
| | Anfang erste Zeile des Bildschirms
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''L '''</tt>
| | '''L '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Anfang letzten Zeile des Bildschirms
| | Anfang letzten Zeile des Bildschirms
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''0 (Null) '''</tt>
| | '''0 (Null) '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Zeilenanfang
| | Zeilenanfang
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''$ '''</tt>
| | '''$ '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Zeilenende
| | Zeilenende
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''RETURN '''</tt>
| | '''RETURN '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | nächste Zeile
| | nächste Zeile
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt><u>'''''n''</u>G '''</tt>
| | <u>'''''n''</u>G '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | (''Go'') Gehe zu Zeile <tt><u>'''''n'''''</u></tt>. <tt><u>'''''n'''''</u></tt> ist eine Zeilennummer. Fehlt die Zahl, wird zur letzten Zeile der Datei gesprungen.
| | (''Go'') Gehe zu Zeile <u>'''''n'''''</u></tt>. <tt><u>'''''n'''''</u> ist eine Zeilennummer. Fehlt die Zahl, wird zur letzten Zeile der Datei gesprungen.
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''%'''</tt>
| | '''%'''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | sucht zur aktuellen Klammer die korrespondierende öffnende bzw. schließende Klammer
| | sucht zur aktuellen Klammer die korrespondierende öffnende bzw. schließende Klammer
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | '''('''
| | '''('''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Cursor zum Anfang des Satzes bewegen  
| | Cursor zum Anfang des Satzes bewegen  
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | ''')'''
| | ''')'''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Cursor zum Anfang des nächsten Satzes bewegen
| | Cursor zum Anfang des nächsten Satzes bewegen
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | '''{'''
| | '''{'''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Cursor zum Anfang des Absatzes bewegen
| | Cursor zum Anfang des Absatzes bewegen
|-
|-
| style="border-top:none;border-bottom:2.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | '''}'''
| | '''}'''
| style="border-top:none;border-bottom:2.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Cursor zum Anfang des nächsten Absatzes bewegen
| | Cursor zum Anfang des nächsten Absatzes bewegen
 


|-
|-
Zeile 136: Zeile 131:
Die Befehle des ''Befehls''-Modus haben normalerweise folgendes Format:  
Die Befehle des ''Befehls''-Modus haben normalerweise folgendes Format:  


<div style="margin-left:0cm;margin-right:0cm;">[Anzahl] Befehl [Ort] </div>
[Anzahl] Befehl [Ort]  


Die meisten Befehle sind ein Zeichen lang. Mit ''Anzahl'' wird ein Wiederholungsfaktor dür den folgenden Befehl angegeben. So löscht zum Beispiel der Befehl <tt>x</tt> das Zeichen unter der Schreibmarke. Wird <tt>10x</tt> eingegeben, werden 10 Zeichen gelöscht.  
Die meisten Befehle sind ein Zeichen lang. Mit ''Anzahl'' wird ein Wiederholungsfaktor dür den folgenden Befehl angegeben. So löscht zum Beispiel der Befehl x</tt> das Zeichen unter der Schreibmarke. Wird <tt>10x eingegeben, werden 10 Zeichen gelöscht.  


Einige Befehle nutzen einen optionalen ''Ort''-Parameter, der angibt, wieviele Zeilen oder wieviel Text des Dokuments vom Befehl bearbeitet werden soll. Der ''Ort''-Parameter kann auch jeder Befehl sein, der die Schreibmarke bewegt.
Einige Befehle nutzen einen optionalen ''Ort''-Parameter, der angibt, wieviele Zeilen oder wieviel Text des Dokuments vom Befehl bearbeitet werden soll. Der ''Ort''-Parameter kann auch jeder Befehl sein, der die Schreibmarke bewegt.


=== Allgemeine Befehle ===
=== Allgemeine Befehle ===
{| style="border-spacing:0;margin:auto;width:17.501cm;"
{|  
|-
|-
| style="border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>''':q'''</tt>
| | ''':q'''
| style="border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | vi beenden (wenn keine Änderungen)
| | vi beenden (wenn keine Änderungen)
|-
|-
| style="border-top:none;border-bottom:2.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>''':q!'''</tt>
| | ''':q!'''
| style="border-top:none;border-bottom:2.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | vi beenden und Änderungen verwerfen  
| | vi beenden und Änderungen verwerfen  
|-
|-
|}
|}


=== Dateibefehle ===
=== Dateibefehle ===
{| style="border-spacing:0;margin:auto;width:17.501cm;"
{|  
|-
|-
| style="border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>''':r Datei'''</tt>
| | ''':r Datei'''
| style="border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Text aus der angegebenen Datei nach der momentanen Zeile einfügen
| | Text aus der angegebenen Datei nach der momentanen Zeile einfügen
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>''':w'''</tt>
| | ''':w'''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Datei speichern
| | Datei speichern
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>''':w!'''</tt>
| | ''':w!'''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Datei speichern und Schreibschutz ignorieren
| | Datei speichern und Schreibschutz ignorieren
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>''':w Datei'''</tt>
| | ''':w Datei'''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Speichern unter ... (angegebene Datei wird überschrieben)
| | Speichern unter ... (angegebene Datei wird überschrieben)
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>''':w >> Datei'''</tt>
| | ''':w >> Datei'''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Text an die angegebene Datei anhängen
| | Text an die angegebene Datei anhängen
|-
|-
| style="border-top:none;border-bottom:2.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>''':wq oder :x oder ZZ'''</tt>
| | ''':wq oder :x oder ZZ'''
| style="border-top:none;border-bottom:2.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Text speichern und vi beenden
| | Text speichern und vi beenden
|-
|-
|}
|}
Zeile 178: Zeile 173:
=== Mehrere Dateien bearbeiten ===
=== Mehrere Dateien bearbeiten ===
Um mehr als eine Datei zu bearbeiten, können beim Aufruf mehrere Dateinamen übergeben oder nachträglich weitere Dateien geöffnet werden.
Um mehr als eine Datei zu bearbeiten, können beim Aufruf mehrere Dateinamen übergeben oder nachträglich weitere Dateien geöffnet werden.
{| style="border-spacing:0;margin:auto;width:17.501cm;"
{|  
|-
|-
| style="border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>''':e Datei'''</tt>
| | ''':e Datei'''
| style="border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Neue Datei bearbeiten
| | Neue Datei bearbeiten
|-
|-
| style="border-top:none;border-bottom:2.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>''':n'''</tt>
| | ''':n'''
| style="border-top:none;border-bottom:2.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Wechselt zur nächsten geladenen Datei
| | Wechselt zur nächsten geladenen Datei
|-
|-
|}
|}


=== Blättern auf dem Bildschirm  ===
=== Blättern auf dem Bildschirm  ===
Normalerweise ist der <tt>'''vi'''</tt> an die Pfeiltasten der Tastatur richtig angepasst. Daneben gibt es noch folgende Möglichkeiten (Auswahl):  
Normalerweise ist der '''vi''' an die Pfeiltasten der Tastatur richtig angepasst. Daneben gibt es noch folgende Möglichkeiten (Auswahl):  
{| style="border-spacing:0;margin:auto;width:17.501cm;"
{|  
|-
|-
| style="border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''STRG-F '''</tt>
| | '''STRG-F '''
| style="border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Eine Bildschirmseite vorwärts
| | Eine Bildschirmseite vorwärts
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''STRG-B '''</tt>
| | '''STRG-B '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Eine Bildschirmseite rückwärts
| | Eine Bildschirmseite rückwärts
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''STRG-D '''</tt>
| | '''STRG-D '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Eine halbe Bildschirmseite vorwärts
| | Eine halbe Bildschirmseite vorwärts
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''STRG-U'''</tt>
| | '''STRG-U'''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Eine halbe Bildschirmseite rückwärts  
| | Eine halbe Bildschirmseite rückwärts  
|-
|-
| style="border-top:none;border-bottom:2.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''STRG-L '''</tt>
| | '''STRG-L '''
| style="border-top:none;border-bottom:2.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Bildschirm neu aufbauen (wenn z.B. eine Nachricht kam)
| | Bildschirm neu aufbauen (wenn z.B. eine Nachricht kam)
|-
|-
|}
|}


=== Texteingabe ===
=== Texteingabe ===
{| style="border-spacing:0;margin:auto;width:17.501cm;"
{|  
|-
|-
| style="border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''i'''</tt>
| | '''i'''
| style="border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | (''insert'') Eingabe links vom Cursor
| | (''insert'') Eingabe links vom Cursor
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''I '''</tt>
| | '''I '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Eingaben am Zeilenanfang
| | Eingaben am Zeilenanfang
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''a'''</tt>
| | '''a'''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | (''append'') Eingabe rechts vom Cursor
| | (''append'') Eingabe rechts vom Cursor
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''A '''</tt>
| | '''A '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | (appand) Eingabe am Zeilenende
| | (appand) Eingabe am Zeilenende
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''o '''</tt>
| | '''o '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Neue Zeile unter der aktuellen Zeile  
| | Neue Zeile unter der aktuellen Zeile  
|-
|-
| style="border-top:none;border-bottom:2.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''O '''</tt>
| | '''O '''
| style="border-top:none;border-bottom:2.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Eingabe in der vorhergehenden Zeile, Spalte 1
| | Eingabe in der vorhergehenden Zeile, Spalte 1
|-
|-
|}
|}
Zeile 234: Zeile 229:


=== Text ändern ===
=== Text ändern ===
{| style="border-spacing:0;margin:auto;width:17.501cm;"
{|  
|-
|-
| style="border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''~'''</tt>
| | '''~'''
| style="border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Wechsel Groß-/Kleinbuchstaben (kein Abschluss mit [ESC])
| | Wechsel Groß-/Kleinbuchstaben (kein Abschluss mit [ESC])
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''r '''</tt>
| | '''r '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Zeichen ersetzen (kein Abschluss mit [ESC])
| | Zeichen ersetzen (kein Abschluss mit [ESC])
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''R '''</tt>
| | '''R '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Mehrere Zeichen ersetzen
| | Mehrere Zeichen ersetzen
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''s '''</tt>
| | '''s '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Ein Zeichen ersetzen und zusätzliche Zeichen anschließend einfügen
| | Ein Zeichen ersetzen und zusätzliche Zeichen anschließend einfügen
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''cc '''</tt>
| | '''cc '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Gesamte Zeile ändern
| | Gesamte Zeile ändern
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''cw '''</tt>
| | '''cw '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Wort ändern
| | Wort ändern
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''C'''</tt>
| | '''C'''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | ab Cursorposition bis Zeilenende ändern
| | ab Cursorposition bis Zeilenende ändern
|-
|-
| style="border-top:none;border-bottom:2.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''J '''</tt>
| | '''J '''
| style="border-top:none;border-bottom:2.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Zeilen verbinden (nächste Zeile anhängen)
| | Zeilen verbinden (nächste Zeile anhängen)
|-
|-
|}
|}


=== Text ausschneiden ===
=== Text ausschneiden ===
{| style="border-spacing:0;margin:auto;width:17.501cm;"
{|  
|-
|-
| style="border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''x '''</tt>
| | '''x '''
| style="border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Zeichen unter dem Cursor löschen
| | Zeichen unter dem Cursor löschen
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''X '''</tt>
| | '''X '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Zeichen vor dem Cursor löschen
| | Zeichen vor dem Cursor löschen
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''dw '''</tt>
| | '''dw '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | ab Cursorposition bis Wortende löschen
| | ab Cursorposition bis Wortende löschen
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''db '''</tt>
| | '''db '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | ab Cursorposition bis Wortanfang löschen
| | ab Cursorposition bis Wortanfang löschen
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt><u>'''''n''</u>dd '''</tt>
| | <u>'''''n''</u>dd '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt><u>'''''n'''''</u></tt> ganze Zeile löschen
| | <u>'''''n'''''</u> ganze Zeile löschen
|-
|-
| style="border-top:none;border-bottom:2.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''D'''</tt>
| | '''D'''
| style="border-top:none;border-bottom:2.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Ab Cursor bis Zeilenende löschen
| | Ab Cursor bis Zeilenende löschen
|-
|-
|}
|}
Zeile 287: Zeile 282:


=== Kopieren und Einfügen ===
=== Kopieren und Einfügen ===
Yank wird in der Regel mit einem zweiten Steuerbuchstaben kombiniert, der angibt, wie viel Text gepuffert wird. (z. B. "<tt>'''yw'''</tt>", "y$"). Vor "<tt>'''yy'''</tt>" kann noch die Anzahl der zu kopierenden Zeilen stehen (z. B. <tt>'''12yy'''</tt>).  
* Yank wird in der Regel mit einem zweiten Steuerbuchstaben kombiniert, der angibt, wie viel Text gepuffert wird. (z. B. "'''yw'''</tt>", "y$").  
{| style="border-spacing:0;margin:auto;width:17.501cm;"
* Vor "<tt>'''yy'''</tt>" kann noch die Anzahl der zu kopierenden Zeilen stehen (z. B. <tt>'''12yy''').  
{|  
|-
|-
| style="border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''yy oder Y'''</tt>
| | '''yy oder Y'''
| style="border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | (Yank) ganze Zeile in anonymen Puffer kopieren
| | (Yank) ganze Zeile in anonymen Puffer kopieren
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''yw'''</tt>
| | '''yw'''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Bis zum nächsten Wort kopieren
| | Bis zum nächsten Wort kopieren
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''Y$'''</tt>
| | '''Y$'''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Bis Zeilenende kopieren
| | Bis Zeilenende kopieren
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''p'''</tt>
| | '''p'''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Hinter dem Cursor einfügen  
| | Hinter dem Cursor einfügen  
|-
|-
| style="border-top:none;border-bottom:2.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''P'''</tt>
| | '''P'''
| style="border-top:none;border-bottom:2.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Vor dem Cursor einfügen
| | Vor dem Cursor einfügen
|-
|-
|}
|}


=== Suchen und Ersetzen ===
=== Suchen und Ersetzen ===
Außer <tt>''''fx''''</tt> und <tt>''''Fx''''</tt> müssen die Suchkommandos mit der Return-Taste abgeschlossen werden.  
Außer ''''fx''''</tt> und <tt>''''Fx'''' müssen die Suchkommandos mit der Return-Taste abgeschlossen werden.  
{| align="center" style="border-spacing:0;width:17.501cm;"
{| align="center"  
|-
|-
| style="border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''fx '''</tt>
| | '''fx '''
| style="border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Zeichen <tt>''''x''''</tt> in der momentanen Zeile suchen (vorwärts)
| | Zeichen ''''x'''' in der momentanen Zeile suchen (vorwärts)
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''Fx '''</tt>
| | '''Fx '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Zeichen <tt>''''x''''</tt> in der momentanen Zeile suchen (rückwärts)
| | Zeichen ''''x'''' in der momentanen Zeile suchen (rückwärts)
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''/str '''</tt>
| | '''/str '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | String <tt>''''str''''</tt> vorwärts in der Datei suchen
| | String ''''str'''' vorwärts in der Datei suchen
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''?str '''</tt>
| | '''?str '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | String <tt>''''str''''</tt> rückwärts in der Datei suchen
| | String ''''str'''' rückwärts in der Datei suchen
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''// '''</tt>
| | '''// '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Letzten Suchbefehl wiederholen (vorwärts)
| | Letzten Suchbefehl wiederholen (vorwärts)
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''?? '''</tt>
| | '''?? '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Letzten Suchbefehl wiederholen (rückwärts)
| | Letzten Suchbefehl wiederholen (rückwärts)
|-
|-
| style="border-top:none;border-bottom:2.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | ''':%s/X/Y/g'''
| | ''':%s/X/Y/g'''
| style="border-top:none;border-bottom:2.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Ersetzt alle 'X' durch 'Y'
| | Ersetzt alle 'X' durch 'Y'
|-
|-
|}
|}


=== Sonstige Kommandos ===
=== Sonstige Kommandos ===
{| style="border-spacing:0;margin:auto;width:17.501cm;"
{|  
|-
|-
| style="border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''u '''</tt>
| | '''u '''
| style="border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Letzten Befehl rückgängig machen
| | Letzten Befehl rückgängig machen
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''U '''</tt>
| | '''U '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Aktuelle Zeile wiederherstellen
| | Aktuelle Zeile wiederherstellen
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''. '''</tt>
| | '''. '''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Letztes Kommando wiederholen
| | Letztes Kommando wiederholen
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>''':!cmd'''</tt>
| | ''':!cmd'''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Verlässt vi temporär und führt das Kommando ''cmd'' aus (ggf. Rückkehr mit exit)
| | Verlässt vi temporär und führt das Kommando ''cmd'' aus (ggf. Rückkehr mit exit)
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>''':r!cmd'''</tt>
| | ''':r!cmd'''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Fügt die Ausgabe von ''cmd'' ab Cursorposition ein
| | Fügt die Ausgabe von ''cmd'' ab Cursorposition ein
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''!!cmd'''</tt>
| | '''!!cmd'''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Benutzt aktuelle Zeile als Eingabe für ''cmd'' und ersetzt durch dessen Ausgabe.
| | Benutzt aktuelle Zeile als Eingabe für ''cmd'' und ersetzt durch dessen Ausgabe.
|-
|-
| style="border-top:none;border-bottom:2.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''Strg + g'''</tt>
| | '''Strg + g'''
| style="border-top:none;border-bottom:2.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Zeilennummer und Dateiinfo zeigen
| | Zeilennummer und Dateiinfo zeigen
|-
|-
|}
|}


=== Markierungen ===
=== Markierungen ===
{| style="border-spacing:0;margin:auto;width:17.501cm;"
{|  
|-
|-
| style="border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''v'''</tt>
| | '''v'''
| style="border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Visuelles Markieren
| | Visuelles Markieren
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''m<u>''A'''''</u></tt>
| | '''m<u>''A'''''</u>
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Marke <tt><u>'''''A'''''</u></tt> setzen
| | Marke <u>'''''A'''''</u> setzen
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>''''<u>''A'''''</u></tt>
| | ''''<u>''A'''''</u>
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Zur Marke <tt><u>'''''A'''''</u></tt> springen
| | Zur Marke <u>'''''A'''''</u> springen
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''d'<u>''A'''''</u></tt>
| | '''d'<u>''A'''''</u>
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Bis Marke <tt><u>'''''A'''''</u></tt> löschen
| | Bis Marke <u>'''''A'''''</u> löschen
|-
|-
| style="border-top:none;border-bottom:2.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''y'<u>''A'''''</u></tt>
| | '''y'<u>''A'''''</u>
| style="border-top:none;border-bottom:2.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Kopieren bis Marke <tt><u>'''''A'''''</u></tt>
| | Kopieren bis Marke <u>'''''A'''''</u>
|-
|-
|}
|}


=== Einrücken und klammern ===
=== Einrücken und klammern ===
{| style="border-spacing:0;margin:auto;width:17.501cm;"
{|  
|-
|-
| style="border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''<<'''</tt>
| | '''<<'''
| style="border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | rückt die aktuelle Zeile um eine Einrückungsbreite nach links.
| | rückt die aktuelle Zeile um eine Einrückungsbreite nach links.
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''>>'''</tt>
| | '''>>'''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | rückt die aktuelle Zeile um eine Einrückungsbreite nach rechts.  
| | rückt die aktuelle Zeile um eine Einrückungsbreite nach rechts.  
|-
|-
| style="border-top:none;border-bottom:2.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''%'''</tt>
| | '''%'''
| style="border-top:none;border-bottom:2.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Bewegt die Einfügemarke zwischen korrespondierenden Klammern
| | Bewegt die Einfügemarke zwischen korrespondierenden Klammern
|-
|-
|}
|}
Zeile 397: Zeile 393:
* Durch das Belegen von vi-Optionen (Kommando :set) mit einem Wert oder das Setzen von Optionen kann die Arbeitsweise des Editors beeinflußt werden.
* Durch das Belegen von vi-Optionen (Kommando :set) mit einem Wert oder das Setzen von Optionen kann die Arbeitsweise des Editors beeinflußt werden.
* Die Kommandos set können in ein File mit dem Namen $HOME/.exrc eingetragen werden, welches bei jedem vi-Editoraufruf abgearbeitet wird.
* Die Kommandos set können in ein File mit dem Namen $HOME/.exrc eingetragen werden, welches bei jedem vi-Editoraufruf abgearbeitet wird.
{| style="border-spacing:0;margin:auto;width:17.492cm;"
{|  
|-
|-
| style="background-color:transparent;border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | ''':set all'''
| | ''':set all'''
| style="background-color:transparent;border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | Anzeige Belegung aller Optionen
| | Anzeige Belegung aller Optionen
|-
|-
| style="background-color:transparent;border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | ''':set number'''
| | ''':set number'''
| style="background-color:transparent;border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | Zeilennummern anzeigen
| | Zeilennummern anzeigen
|-
|-
| style="background-color:transparent;border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | ''':set nonumber'''
| | ''':set nonumber'''
| style="background-color:transparent;border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | Zeilennummern nicht anzeigen
| | Zeilennummern nicht anzeigen
|-
|-
| style="background-color:transparent;border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | ''':set ignorecase'''
| | ''':set ignorecase'''
| style="background-color:transparent;border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | Beim Suchen soll nicht zwischen Groß- und Kleinbuchstaben unterschieden werden
| | Beim Suchen soll nicht zwischen Groß- und Kleinbuchstaben unterschieden werden
|-
|-
| style="background-color:transparent;border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | ''':set noignorecase'''
| | ''':set noignorecase'''
| style="background-color:transparent;border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | Beim Suchen soll zwischen Groß- und Kleinbuchstaben unterschieden werden
| | Beim Suchen soll zwischen Groß- und Kleinbuchstaben unterschieden werden
|-
|-
| style="background-color:transparent;border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | ''':set showmatch'''
| | ''':set showmatch'''
| style="background-color:transparent;border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | Bei Eingabe einer schließenden Klammer wird die dazugehörige öffnende Klammer angezeigt
| | Bei Eingabe einer schließenden Klammer wird die dazugehörige öffnende Klammer angezeigt
|-
|-
| style="background-color:transparent;border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | ''':set noshowmatch'''
| | ''':set noshowmatch'''
| style="background-color:transparent;border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | Keine Klammernprüfung
| | Keine Klammernprüfung
|-
|-
| style="background-color:transparent;border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | ''':set autoindent'''
| | ''':set autoindent'''
| style="background-color:transparent;border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | Automatische Einrückung
| | Automatische Einrückung
|-
|-
| style="background-color:transparent;border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | ''':set noautoindent'''
| | ''':set noautoindent'''
| style="background-color:transparent;border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | Keine automatische Einrückung
| | Keine automatische Einrückung
|-
|-
| style="background-color:transparent;border-top:none;border-bottom:2.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | ''':set wrapmargin=n'''
| | ''':set wrapmargin=n'''
| style="background-color:transparent;border-top:none;border-bottom:2.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | Ab n Zeichen vor Zeilenende wird automatisch an einer Wortgrenze getrennt und eine neue Zeile begonnen
| | Ab n Zeichen vor Zeilenende wird automatisch an einer Wortgrenze getrennt und eine neue Zeile begonnen
|-
|-
|}
|}


==Tipps und Tricks ==
==Tipps und Tricks ==
'''Zeile verschieben'''* Zeile mit <tt>'''dd'''</tt> löschen  
'''Zeile verschieben'''* Zeile mit '''dd''' löschen  
* Zur neuen Position wechseln  
* Zur neuen Position wechseln  
* mit p (hinter dem Cursor)''' '''
* mit p (hinter dem Cursor)''' '''
* <tt>'''P'''</tt> (vor dem Cursor) einfügen  
* '''P''' (vor dem Cursor) einfügen  
 
 


'''Zeile kopieren'''* Zeile mit <tt>'''yy'''</tt> in den Puffer kopieren  
'''Zeile kopieren'''* Zeile mit '''yy''' in den Puffer kopieren  
* Zur neuen Position wechseln  
* Zur neuen Position wechseln  
* Zeile mit p (vor dem Cursor)  
* Zeile mit p (vor dem Cursor)  
* oder P (nach dem Cursor) einfügen  
* oder P (nach dem Cursor) einfügen  


 
'''Ein paar einfache Tricks'''* zwei '''aufeinander folgende Zeichen vertauschen: xp'''
 
* zwei aufeinander folgende Zeilen vertauschen: '''ddp'''
'''Ein paar einfache Tricks'''* zwei '''aufeinander folgende Zeichen vertauschen: <tt>xp'''</tt>
* eine Zeile duplizieren: '''yyp'''
* zwei aufeinander folgende Zeilen vertauschen: <tt>'''ddp'''</tt>
* eine Zeile duplizieren: <tt>'''yyp'''</tt>
 
 


'''Mehrere Zeilen verschieben oder kopieren: '''
'''Mehrere Zeilen verschieben oder kopieren: '''


Mehrere Zeilen werden durch Voranstellen der Zeilenzahl vor "<tt>'''dd'''</tt>" oder "<tt>'''yy'''</tt>" in den Puffer g'''ebracht. Alles weitere wie oben. '''
Mehrere Zeilen werden durch Voranstellen der Zeilenzahl vor "'''dd'''</tt>" oder "<tt>'''yy'''" in den Puffer g'''ebracht. Alles weitere wie oben. '''


'''Weitere Puffer:'''
'''Weitere Puffer:'''
Zeile 460: Zeile 450:
Neben dem anonymen Puffer können 26 weitere Pufferbereiche verwendet werden, die durch einen Buchstaben ("a" - "z") bezeichnet werden. Dazu wird ein Doppelapostroph und der Puffername vor den Befehl gestellt, z.B.:  
Neben dem anonymen Puffer können 26 weitere Pufferbereiche verwendet werden, die durch einen Buchstaben ("a" - "z") bezeichnet werden. Dazu wird ein Doppelapostroph und der Puffername vor den Befehl gestellt, z.B.:  


 
{|  
{| style="border-spacing:0;margin:auto;width:17.501cm;"
|-
|-
| style="border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''"ayy'''</tt>
| | '''"ayy'''
| style="border-top:2.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | kopiere Zeile in Puffer <tt>'''a'''</tt>
| | kopiere Zeile in Puffer '''a'''
|-
|-
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''"b6yy'''</tt>
| | '''"b6yy'''
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | kopiere die nächsten 6 Zeilen in Puffer <tt>'''b'''</tt>
| | kopiere die nächsten 6 Zeilen in Puffer '''b'''
|-
|-
| style="border-top:none;border-bottom:2.5pt solid #000000;border-left:2.5pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | <tt>'''"ap'''</tt>
| | '''"ap'''
| style="border-top:none;border-bottom:2.5pt solid #000000;border-left:0.5pt solid #000000;border-right:2.5pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.349cm;padding-right:0.349cm;" | Inhalt Puffer <tt>'''a'''</tt> nach dem Cursor einfügen
| | Inhalt Puffer '''a''' nach dem Cursor einfügen
|-
|-
|}
|}
'''Blöcke von einer Datei in die andere übertragen:'''* Mit dem Kommando <tt>''':e <dateiname>'''</tt> kann eine neue Datei bearbeitet werden, ohne den vi zu verlassen.
* vi mit der ersten Datei aufrufen, z. B.: <tt>'''vi foo.txt'''</tt>
* Textblock mit den Yank-Kommando in einen Puffer schreiben: <tt>'''"f10yy'''</tt> (10 Zeilen in Puffer <tt>'''f'''</tt>)
* neue Datei holen, z. B.: <tt>''':e bar.txt '''</tt>
* an die gewünschte Stelle gehen und Puffer einfügen''': <tt>"fp '''</tt>


'''Blöcke von einer Datei in die andere übertragen:'''* Mit dem Kommando ''':e <dateiname>''' kann eine neue Datei bearbeitet werden, ohne den vi zu verlassen.
* vi mit der ersten Datei aufrufen, z. B.: '''vi foo.txt'''
* Textblock mit den Yank-Kommando in einen Puffer schreiben: '''"f10yy'''</tt> (10 Zeilen in Puffer <tt>'''f''')
* neue Datei holen, z. B.: ''':e bar.txt '''
* an die gewünschte Stelle gehen und Puffer einfügen''': "fp '''


== Weblinks ==
== Weblinks ==
 
# [http://vim.wikia.com/ http://vim.wikia.com]
* [http://vim.wikia.com/ http://vim.wikia.com]

Version vom 3. August 2020, 16:23 Uhr

Der Bildschirmeditor vi(m)

Einführung

Datei:Grafik2.png

Der Editor vi (visual) ist ein bildschirmorientierter Editor, d.h. der Text ist in seiner aktuellen Version auf dem Bildschirm zu sehen. Es erfolgt hier nur ein Überblick der Möglichkeiten des vi.

Nach dem Aufruf des vi befindet sich der Benutzer im Kommandomodus. Die Arbeit spielt sich wie beim ed immer in zwei Ebenen ab: * Kommandomodus

  • Freies Positionieren innerhalb des Textes
  • Umsetzen von TextblöckenSchreiben und Lesen von Dateien
  • Löschen von Textblöcken und Aufruf von UNIX-Kommandos
  • Eingabemodus
  • Einfügen von Text
  • Überschreiben vorhandener Textpassagen

Das Umschalten zwischen den Modi erfolgt mit der [ESC]-Taste. Die Handhabung des Kommandomodus des vi macht die Bedienung für den Anfänger etwas ungewohnt. Die Cursorpositionierung erfolgt mit verschiedenen Tasten, für die Eingabe von Dateibefehlen oder anderen Funktionen (z. B. Suchen/ersetzen) ist die Eingabe eines Doppelpunktes nötig. Man befindet sich dann in ex-Modus, der ähnliche Eigenschaften hat, wie der Editor ed.

Den vi starten

Programmaufruf:

vi [Dateiname]

Datei:Grafik4.png

Ist die Datei vorhanden, wird sie in den Editorpuffer geladen, andernfalls wird sie neu angelegt.

Wird der vi ohne die Angabe eines Dateinamens gestartet, ist der Bildschirm auf der linken Seite mit Tilden (~) gefüllt. Jede leere Zeile hinter dem Ende der Datei wird auf diese Art dargestellt.

Am unteren Ende des Bildschirms wird der Dateiname anzeigt, falls eine existierende Datei angegeben wurde. Die Größe der Datei wird ebenfalls angezeigt .

Datei:Grafik5.png

Wenn diese Informationen nicht angezeigt werden, könnte es sein, dass der Terminaltyp falsch gesetzt ist. Dann sollte der vi mit :q! und [ENTER] verlassen und der Terminaltyp korrekt eingestellt werden.

Falls die angegebene Datei nicht existiert, wird auf folgende Art angezeigt, dass es sich um eine neue Datei handelt:

"newfile" [New file]

Nach dem Start ohne Dateinamen, ist die unterste Bildschirmzeile leer.

Aufrufparameter

-r (recovery) Stellt die letzte Datei nach einem Absturz wieder her

Hilfen

man vi Manualpage von vi aufrufen
:h <Stichwort> Hilfe aufrufen (mit :q verlassen)
vimtutor Lernprogramm

Datei:Grafik3.png

Cursorpositionierung

Normalerweise ist der vi an die Pfeiltasten der Tastatur richtig angepasst. Daneben gibt es noch folgende Möglichkeiten (Auswahl):

h Zeichen links (auch Backspace)
l Zeichen rechts (auch blank)
k Zeile höher
j Zeile tiefer
b Wortanfang
e Wortende
w Anfang nächstes Wort
H Anfang erste Zeile des Bildschirms
L Anfang letzten Zeile des Bildschirms
0 (Null) Zeilenanfang
$ Zeilenende
RETURN nächste Zeile
nG (Go) Gehe zu Zeile n. n ist eine Zeilennummer. Fehlt die Zahl, wird zur letzten Zeile der Datei gesprungen.
% sucht zur aktuellen Klammer die korrespondierende öffnende bzw. schließende Klammer
( Cursor zum Anfang des Satzes bewegen
) Cursor zum Anfang des nächsten Satzes bewegen
{ Cursor zum Anfang des Absatzes bewegen
} Cursor zum Anfang des nächsten Absatzes bewegen

Befehle im Befehls-Modus

Die Befehle des Befehls-Modus haben normalerweise folgendes Format:

[Anzahl] Befehl [Ort] 

Die meisten Befehle sind ein Zeichen lang. Mit Anzahl wird ein Wiederholungsfaktor dür den folgenden Befehl angegeben. So löscht zum Beispiel der Befehl x das Zeichen unter der Schreibmarke. Wird 10x eingegeben, werden 10 Zeichen gelöscht.

Einige Befehle nutzen einen optionalen Ort-Parameter, der angibt, wieviele Zeilen oder wieviel Text des Dokuments vom Befehl bearbeitet werden soll. Der Ort-Parameter kann auch jeder Befehl sein, der die Schreibmarke bewegt.

Allgemeine Befehle

:q vi beenden (wenn keine Änderungen)
:q! vi beenden und Änderungen verwerfen

Dateibefehle

:r Datei Text aus der angegebenen Datei nach der momentanen Zeile einfügen
:w Datei speichern
:w! Datei speichern und Schreibschutz ignorieren
:w Datei Speichern unter ... (angegebene Datei wird überschrieben)
:w >> Datei Text an die angegebene Datei anhängen
:wq oder :x oder ZZ Text speichern und vi beenden

Mehrere Dateien bearbeiten

Um mehr als eine Datei zu bearbeiten, können beim Aufruf mehrere Dateinamen übergeben oder nachträglich weitere Dateien geöffnet werden.

:e Datei Neue Datei bearbeiten
:n Wechselt zur nächsten geladenen Datei

Blättern auf dem Bildschirm

Normalerweise ist der vi an die Pfeiltasten der Tastatur richtig angepasst. Daneben gibt es noch folgende Möglichkeiten (Auswahl):

STRG-F Eine Bildschirmseite vorwärts
STRG-B Eine Bildschirmseite rückwärts
STRG-D Eine halbe Bildschirmseite vorwärts
STRG-U Eine halbe Bildschirmseite rückwärts
STRG-L Bildschirm neu aufbauen (wenn z.B. eine Nachricht kam)

Texteingabe

i (insert) Eingabe links vom Cursor
I Eingaben am Zeilenanfang
a (append) Eingabe rechts vom Cursor
A (appand) Eingabe am Zeilenende
o Neue Zeile unter der aktuellen Zeile
O Eingabe in der vorhergehenden Zeile, Spalte 1

Der Eingabemodus wird durch Drücken der [ESC]-Taste verlassen.

Text ändern

~ Wechsel Groß-/Kleinbuchstaben (kein Abschluss mit [ESC])
r Zeichen ersetzen (kein Abschluss mit [ESC])
R Mehrere Zeichen ersetzen
s Ein Zeichen ersetzen und zusätzliche Zeichen anschließend einfügen
cc Gesamte Zeile ändern
cw Wort ändern
C ab Cursorposition bis Zeilenende ändern
J Zeilen verbinden (nächste Zeile anhängen)

Text ausschneiden

x Zeichen unter dem Cursor löschen
X Zeichen vor dem Cursor löschen
dw ab Cursorposition bis Wortende löschen
db ab Cursorposition bis Wortanfang löschen
ndd n ganze Zeile löschen
D Ab Cursor bis Zeilenende löschen

Gelöschte Zeichen werden im anonymen Puffer abgelegt.

Kopieren und Einfügen

  • Yank wird in der Regel mit einem zweiten Steuerbuchstaben kombiniert, der angibt, wie viel Text gepuffert wird. (z. B. "yw", "y$").
  • Vor "yy" kann noch die Anzahl der zu kopierenden Zeilen stehen (z. B. 12yy).
yy oder Y (Yank) ganze Zeile in anonymen Puffer kopieren
yw Bis zum nächsten Wort kopieren
Y$ Bis Zeilenende kopieren
p Hinter dem Cursor einfügen
P Vor dem Cursor einfügen

Suchen und Ersetzen

Außer 'fx' und 'Fx' müssen die Suchkommandos mit der Return-Taste abgeschlossen werden.

fx Zeichen 'x' in der momentanen Zeile suchen (vorwärts)
Fx Zeichen 'x' in der momentanen Zeile suchen (rückwärts)
/str String 'str' vorwärts in der Datei suchen
?str String 'str' rückwärts in der Datei suchen
// Letzten Suchbefehl wiederholen (vorwärts)
?? Letzten Suchbefehl wiederholen (rückwärts)
:%s/X/Y/g Ersetzt alle 'X' durch 'Y'

Sonstige Kommandos

u Letzten Befehl rückgängig machen
U Aktuelle Zeile wiederherstellen
. Letztes Kommando wiederholen
:!cmd Verlässt vi temporär und führt das Kommando cmd aus (ggf. Rückkehr mit exit)
:r!cmd Fügt die Ausgabe von cmd ab Cursorposition ein
!!cmd Benutzt aktuelle Zeile als Eingabe für cmd und ersetzt durch dessen Ausgabe.
Strg + g Zeilennummer und Dateiinfo zeigen

Markierungen

v Visuelles Markieren
mA Marke A setzen
'A Zur Marke A springen
d'A Bis Marke A löschen
y'A Kopieren bis Marke A

Einrücken und klammern

<< rückt die aktuelle Zeile um eine Einrückungsbreite nach links.
>> rückt die aktuelle Zeile um eine Einrückungsbreite nach rechts.
% Bewegt die Einfügemarke zwischen korrespondierenden Klammern

Einstellungen

  • Durch das Belegen von vi-Optionen (Kommando :set) mit einem Wert oder das Setzen von Optionen kann die Arbeitsweise des Editors beeinflußt werden.
  • Die Kommandos set können in ein File mit dem Namen $HOME/.exrc eingetragen werden, welches bei jedem vi-Editoraufruf abgearbeitet wird.
:set all Anzeige Belegung aller Optionen
:set number Zeilennummern anzeigen
:set nonumber Zeilennummern nicht anzeigen
:set ignorecase Beim Suchen soll nicht zwischen Groß- und Kleinbuchstaben unterschieden werden
:set noignorecase Beim Suchen soll zwischen Groß- und Kleinbuchstaben unterschieden werden
:set showmatch Bei Eingabe einer schließenden Klammer wird die dazugehörige öffnende Klammer angezeigt
:set noshowmatch Keine Klammernprüfung
:set autoindent Automatische Einrückung
:set noautoindent Keine automatische Einrückung
:set wrapmargin=n Ab n Zeichen vor Zeilenende wird automatisch an einer Wortgrenze getrennt und eine neue Zeile begonnen

Tipps und Tricks

Zeile verschieben* Zeile mit dd löschen

  • Zur neuen Position wechseln
  • mit p (hinter dem Cursor)
  • P (vor dem Cursor) einfügen

Zeile kopieren* Zeile mit yy in den Puffer kopieren

  • Zur neuen Position wechseln
  • Zeile mit p (vor dem Cursor)
  • oder P (nach dem Cursor) einfügen

Ein paar einfache Tricks* zwei aufeinander folgende Zeichen vertauschen: xp

  • zwei aufeinander folgende Zeilen vertauschen: ddp
  • eine Zeile duplizieren: yyp

Mehrere Zeilen verschieben oder kopieren:

Mehrere Zeilen werden durch Voranstellen der Zeilenzahl vor "dd" oder "yy" in den Puffer gebracht. Alles weitere wie oben.

Weitere Puffer:

Neben dem anonymen Puffer können 26 weitere Pufferbereiche verwendet werden, die durch einen Buchstaben ("a" - "z") bezeichnet werden. Dazu wird ein Doppelapostroph und der Puffername vor den Befehl gestellt, z.B.:

"ayy kopiere Zeile in Puffer a
"b6yy kopiere die nächsten 6 Zeilen in Puffer b
"ap Inhalt Puffer a nach dem Cursor einfügen

Blöcke von einer Datei in die andere übertragen:* Mit dem Kommando :e <dateiname> kann eine neue Datei bearbeitet werden, ohne den vi zu verlassen.

  • vi mit der ersten Datei aufrufen, z. B.: vi foo.txt
  • Textblock mit den Yank-Kommando in einen Puffer schreiben: "f10yy (10 Zeilen in Puffer f)
  • neue Datei holen, z. B.: :e bar.txt
  • an die gewünschte Stelle gehen und Puffer einfügen: "fp

Weblinks

  1. http://vim.wikia.com