Vim: Unterschied zwischen den Versionen

Aus Foxwiki
 
(124 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== Einführung ==
'''vim''' - Editor für die Kommandozeile


[[Image:Grafik2.pngXXX]]
== Beschreibung ==
Der Editor vi (visual) ist ein bildschirmorientierter Editor
* Der Text ist in seiner aktuellen Version auf dem Bildschirm zu sehen
* Kann interaktiv


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 Texteditor Vi ist ein mächtiges Werkzeug für das Terminal, der in der Unixwelt lange Zeit der Standard war und auch heute immer noch weitverbreitet ist
* Er ist allerdings proprietäre Software, sodass man im Allgemeinen vom Vim - Vi improved redet, wenn man über den Vi spricht
* Dies ist ein Open Source-Klon des Vi, der auf jedem Linux-System zu finden ist
* Auch vom Vim existieren eine Reihe Klone, die aber mehr oder weniger den gleichen Ansatz verfolgen
* Mit gVim existiert ebenfalls eine Version mit grafischer (GTK-) Oberfläche


[[Image:Grafik1.pngXXX]]
=== Vi improved (vim) ===
Vim funktioniert wie der [[vi]]-Editor im [[Textmodus]] auf jedem [[Terminal (Computer)|Terminal]]
* Die Bedienung erfolgt dann üblicherweise über die [[Tastatur]], eine Maus wird zwar auf vielen Terminals unterstützt, ihre Verwendung ist aber limitiert
* Das ist zum einen historisch bedingt durch die zu Ur-vi-Zeiten Mitte der 1970er Jahre üblichen Bildschirmterminals mit einer langsamen, [[Serielle Datenübertragung|seriellen]] Verbindung zum [[Hostrechner|Hauptrechner]], zum anderen schätzen erfahrene Benutzer die Effizienzvorteile der mächtigen Tastatursteuerung („vi is at your fingertips“)
* Aus der Limitierung damaliger Terminals resultiert sein [[Vim#Modi|modales Konzept]]
* Vim ist nahezu vollständig abwärtskompatibel zu vi, hat jedoch eine Vielzahl an Weiterentwicklungen und eine moderne [[Grafische Benutzeroberfläche|grafische Benutzerschnittstelle]] mit [[Menü (Computer)|Menüs]] (GVim) sowie eine vereinfachte Version für Einsteiger (eVim)


Nach dem Aufruf des vi befindet sich der Benutzer im Kommandomodus. Die Arbeit spielt sich wie beim ed immer in zwei Ebenen ab: * Kommandomodus
Vim kann auf vielen [[Betriebssystem]]en genutzt werden und ist auf fast jedem GNU/[[Linux]]-Rechner zu finden
* In der Regel wird beim Aufruf ''vi'' unter Linux Vim über eine [[Symbolische Verknüpfung|Verknüpfung]] oder einen [[Alias (Unix)|Alias]] aufgerufen
* Welcher vi-Ableger gestartet wurde, lässt sich im Kommando-Modus über den Befehl '':version'' überprüfen


== Modus ==
Vim verfügt über verschiedene Arbeitsmodi
{| class="wikitable options"
| Kommandomodus ||
* Freies Positionieren innerhalb des Textes
* Freies Positionieren innerhalb des Textes
* Umsetzen von TextblöckenSchreiben und Lesen von Dateien
* Umsetzen von Textblöcken
* Schreiben und Lesen von Dateien
* Löschen von Textblöcken und Aufruf von UNIX-Kommandos
* Löschen von Textblöcken und Aufruf von UNIX-Kommandos
 
|-
* Eingabemodus
| Eingabemodus ||
 
* 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.
=== Den vi starten ===
Programmaufruf:
'''vi [Dateiname]'''
[[Image:Grafik4.pngXXX]]
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 .
[[Image:Grafik5.pngXXX]]
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 ===
{|class="wikitable"
|-
|  | '''-r '''
|  | (recovery) Stellt die letzte Datei nach einem Absturz wieder her
|-
|}
=== Hilfen ===
{|class="wikitable"
|-
|  | '''man vi'''
|  | Manualpage von '''vi''' aufrufen
|-
|  | ''':h <Stichwort>'''
|  | Hilfe aufrufen (mit :q verlassen)
|-
|  | '''vimtutor'''
|  | Lernprogramm
|-
|}
[[Image:Grafik3.pngXXX]]
== Cursorpositionierung ==
Normalerweise ist der '''vi''' an die Pfeiltasten der Tastatur richtig angepasst. Daneben gibt es noch folgende Möglichkeiten (Auswahl):
{|class="wikitable"
|-
|  | '''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
|-
|  | <u>'''''n''</u>G '''
|  | (''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.
|-
|  | '''%'''
|  | 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
|-
|-
| Kommandozeilenmodus </br>(ex-Modus) ||
* Dateien speichern, öffnen, wechseln
* Suchen und ersetzen
* Konfiguration
|}
|}


== Befehle im Befehls-Modus ==
Nach dem Aufruf des vi befindet sich der Benutzer im Kommandomodus
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</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.
== Aufruf ==
<syntaxhighlight lang="bash" highlight="1,2" line>
vim [Optionen] [Datei]n
vi [Optionen] [Datei]n
</syntaxhighlight>
Auf vielen Systemen ist die Kurzform ''vi'' ausreichend


=== Allgemeine Befehle ===
=== Optionen ===
{|class="wikitable"
{| class="wikitable options"
|-
|  | ''':q'''
|  | vi beenden (wenn keine Änderungen)
|-
|-
|  | ''':q!'''
! Option !! Beschreibung
|  | vi beenden und Änderungen verwerfen
|-
|-
| -r || (recovery) Stellt die letzte Datei nach einem Absturz wieder her
|}
|}
 
=== Parameter ===
=== Dateibefehle ===
=== Umgebungsvariablen ===
{|class="wikitable"
=== Exit-Status ===
|-
=== Hilfen ===
|  | ''':r Datei'''
{|class="wikitable sortable"
|  | 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.
{|class="wikitable"
|-
|  | ''':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):
{|class="wikitable"
|-
|-
| | '''STRG-F '''
| | '''man vi'''
| | Eine Bildschirmseite vorwärts
| | Manualpage von '''vi''' aufrufen
|-
|-
| | '''STRG-B '''
| | ''':h <Stichwort>'''
| | Eine Bildschirmseite rückwärts
| | Hilfe aufrufen (mit :q verlassen)
|-
|-
| | '''STRG-D '''
| | '''vimtutor'''
| | Eine halbe Bildschirmseite vorwärts
| | Lernprogramm
|-
|  | '''STRG-U'''
|  | Eine halbe Bildschirmseite rückwärts
|-
|  | '''STRG-L '''
|  | Bildschirm neu aufbauen (wenn z.B. eine Nachricht kam)
|-
|-
|}
|}


=== Texteingabe ===
== Befehlsmodus ==
{|class="wikitable"
; Nach dem Aufruf befindet sich Vim im Befehlsmodus
|-
Vergleichbar mit Klicken durch die Menüs eines grafischen Programms
|  | '''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 ===
{| class="wikitable options"
{|class="wikitable"
! Tastenkürzel !! Aktion
|-
|  | '''~'''
|  | Wechsel Groß-/Kleinbuchstaben (kein Abschluss mit [ESC])
|-
|  | '''r '''
|  | Zeichen ersetzen (kein Abschluss mit [ESC])
|-
|-
| | '''R '''
| j || Schritt abwärts
| | Mehrere Zeichen ersetzen
|-
| k || Schritt aufwärts
|-
|-
| | '''s '''
| h || Schritt nach links
| | Ein Zeichen ersetzen und zusätzliche Zeichen anschließend einfügen
|-
|-
| | '''cc '''
| l || Schritt nach rechts
| | Gesamte Zeile ändern
|-
|-
| | '''cw '''
| dd || löscht eine komplette Zeile an der Cursorposition
| | Wort ändern
|-
|-
| | '''C'''
| u || macht letzte Änderung rückgängig
| | ab Cursorposition bis Zeilenende ändern
|-
|-
| | '''J '''
| STRG + R || macht u rückgängig
| | Zeilen verbinden (nächste Zeile anhängen)
|-
|-
| ZZ || speichert die Datei und beendet Vim
|}
|}


=== Text ausschneiden ===
== Einfügemodus ==
{|class="wikitable"
Befindet sich der Vim im Einfügemodus, so kann der Text nach Belieben editiert werden
|-
{| class="wikitable options"
|  | '''x '''
! Tastenkürzel !! Aktion
|  | Zeichen unter dem Cursor löschen
|-
|  | '''X '''
|  | Zeichen vor dem Cursor löschen
|-
|  | '''dw '''
|  | ab Cursorposition bis Wortende löschen
|-
|-
| | '''db '''
| i || Editiermodus an der Cursorposition starten
| | ab Cursorposition bis Wortanfang löschen
|-
|-
| | <u>'''''n''</u>dd '''
| a || Editiermodus eine Stelle hinter der Cursorposition starten
| | <u>'''''n'''''</u> ganze Zeile löschen
|-
|-
| | '''D'''
| o || Zeile unterhalb der Cursorposition einfügen und Editiermodus starten
| | Ab Cursor bis Zeilenende löschen
|-
|-
| ESC || Editiermodus verlassen
|}
|}
Gelöschte Zeichen werden im anonymen Puffer abgelegt.


=== Kopieren und Einfügen ===
== Kommandozeilenmodus ==
* Yank wird in der Regel mit einem zweiten Steuerbuchstaben kombiniert, der angibt, wie viel Text gepuffert wird. (z. B. "'''yw'''</tt>", "y$").
Neben Befehlen, die zum Bewegen durch die Datei oder deren Modifikation dienen, kann man im Kommandozeilenmodus auch Parameter des Programms selber ändern, Dateien laden und/oder (Shell-) Befehle ausführen
* Vor "<tt>'''yy'''</tt>" kann noch die Anzahl der zu kopierenden Zeilen stehen (z. B. <tt>'''12yy''').
* Das Verhalten ist mit einer Mini-Kommandozeile vergleichbar
{|class="wikitable"
{| class="wikitable options"
! Tastenkürzel !! Aktion
|-
|-
| | '''yy oder Y'''
| :w || Datei speichern
| | (Yank) ganze Zeile in anonymen Puffer kopieren
|-
|-
| | '''yw'''
|:w name || Datei unter name speichern
| | Bis zum nächsten Wort kopieren
|-
|-
| | '''Y$'''
| :q! || Vim ohne Speichern beenden
| | Bis Zeilenende kopieren
|-
|-
| | '''p'''
| /ausdruck || Datei nach ''ausdruck'' durchsuchen
|  | Hinter dem Cursor einfügen
|-
|-
| | '''P'''
| :e ''dateiname'' || Datei ''dateiname'' öffnen
|  | Vor dem Cursor einfügen
|-
|-
| :e # || zur zuvor bearbeiteten Datei zurückkehren
|}
|}


=== Suchen und Ersetzen ===
== Cursorpositionierung ==
Außer ''''fx''''</tt> und <tt>''''Fx'''' müssen die Suchkommandos mit der Return-Taste abgeschlossen werden.
Normalerweise ist der '''vi''' an die Pfeiltasten der Tastatur richtig angepasst
{|class="wikitable"
* Daneben gibt es noch folgende Möglichkeiten (Auswahl)
|-
{|class="wikitable opt2 sortable"
|  | '''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 ===
{|class="wikitable"
|-
|  | '''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 ===
{|class="wikitable"
|-
|  | '''v'''
|  | Visuelles Markieren
|-
|  | '''m<u>''A'''''</u>
|  | Marke <u>'''''A'''''</u> setzen
|-
|-
| | ''''<u>''A'''''</u>
| | '''h '''
| | Zur Marke <u>'''''A'''''</u> springen
| | Zeichen links (auch Backspace)
|-
|-
| | '''d'<u>''A'''''</u>
| | '''l '''
| | Bis Marke <u>'''''A'''''</u> löschen
| | Zeichen rechts (auch blank)
|-
|-
| | '''y'<u>''A'''''</u>
| | '''k '''
| | Kopieren bis Marke <u>'''''A'''''</u>
| | Zeile höher
|-
|-
|}
| | '''j '''
 
| | Zeile tiefer
=== Einrücken und klammern ===
{|class="wikitable"
|-
|-
| | '''<<'''
| | '''b '''
| | rückt die aktuelle Zeile um eine Einrückungsbreite nach links.
| | Wortanfang
|-
|-
| | '''>>'''
| | '''e '''
| | rückt die aktuelle Zeile um eine Einrückungsbreite nach rechts.
| | Wortende
|-
|-
| | '''%'''
| | '''w '''
| | Bewegt die Einfügemarke zwischen korrespondierenden Klammern
| | Anfang nächstes Wort
|-
|-
|}
| | '''H '''
 
| | Anfang erste Zeile des Bildschirms
== 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.
{|class="wikitable"
|-
|-
| | ''':set all'''
| | '''L '''
| | Anzeige Belegung aller Optionen
| | Anfang letzten Zeile des Bildschirms
|-
|-
| | ''':set number'''
| | '''0 (Null) '''
| | Zeilennummern anzeigen
| | Zeilenanfang
|-
|-
| | ''':set nonumber'''
| | '''$ '''
| | Zeilennummern nicht anzeigen
| | Zeilenende
|-
|-
| | ''':set ignorecase'''
| | '''RETURN '''
| | Beim Suchen soll nicht zwischen Groß- und Kleinbuchstaben unterschieden werden
| | nächste Zeile
|-
|-
| | ''':set noignorecase'''
| | <u>'''''n''</u>G '''
| | Beim Suchen soll zwischen Groß- und Kleinbuchstaben unterschieden werden
| | (''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
|-
|-
| | ''':set showmatch'''
| | '''%'''
| | Bei Eingabe einer schließenden Klammer wird die dazugehörige öffnende Klammer angezeigt
| | sucht zur aktuellen Klammer die korrespondierende öffnende oder schließende Klammer
|-
|-
| | ''':set noshowmatch'''
| | '''('''
| | Keine Klammernprüfung
| | Cursor zum Anfang des Satzes bewegen
|-
|-
| | ''':set autoindent'''
| | ''')'''
| | Automatische Einrückung
| | Cursor zum Anfang des nächsten Satzes bewegen
|-
|-
| | ''':set noautoindent'''
| | '''{'''
| | Keine automatische Einrückung
| | Cursor zum Anfang des Absatzes bewegen
|-
|-
| | ''':set wrapmargin=n'''
| | '''}'''
| | Ab n Zeichen vor Zeilenende wird automatisch an einer Wortgrenze getrennt und eine neue Zeile begonnen
| | Cursor zum Anfang des nächsten Absatzes bewegen
|-
|-
|}
|}


=== ~/.vimrc ==
== Installation ==
 
<syntaxhighlight lang="bash" highlight="1" line>
set nocompatible " must be the first line
sudo apt install vim
syntax on
</syntaxhighlight>
set mouse-=a
filetype on
filetype indent on
filetype plugin on
set laststatus=2
set statusline=%<%f\%h%m%r%=%-20.(line=%l\ \ col=%c%V\ \ totlin=%L%)\ \ \%h%m%r%=%-40(bytval=0x%B,%n%Y%)\%P
set ofu=syntaxcomplete#Complete
 
==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'''
== Anhang ==
* zwei aufeinander folgende Zeilen vertauschen: '''ddp'''
=== Siehe auch ===
* eine Zeile duplizieren: '''yyp'''
* [[gvim]]
----
{{Special:PrefixIndex/{{BASEPAGENAME}}}}


'''Mehrere Zeilen verschieben oder kopieren: '''
==== Dokumentation ====
===== Man-Page =====
===== Info-Pages =====
==== Links ====
===== Projekt =====
===== Weblinks =====
# http://vim.wikia.com
# https://vim.fandom.com/wiki/Search_and_replace
# http://wiki.ubuntu-forum.de/index.php?title=Vim
# https://linuxwiki.de/Vim


Mehrere Zeilen werden durch Voranstellen der Zeilenzahl vor "'''dd'''</tt>" oder "<tt>'''yy'''" in den Puffer g'''ebracht. Alles weitere wie oben. '''
{{DEFAULTSORT:vim}}
 
{{DISPLAYTITLE:vim}}
'''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.:  
 
{|class="wikitable"
|-
|  | '''"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.
[[Kategorie:vim]]
* vi mit der ersten Datei aufrufen, z. B.: '''vi foo.txt'''
[[Kategorie:Linux/Befehl]]
* 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 ==
</noinclude>
# [http://vim.wikia.com/ http://vim.wikia.com]

Aktuelle Version vom 12. November 2024, 20:13 Uhr

vim - Editor für die Kommandozeile

Beschreibung

Der Editor vi (visual) ist ein bildschirmorientierter Editor

  • Der Text ist in seiner aktuellen Version auf dem Bildschirm zu sehen
  • Kann interaktiv

Der Texteditor Vi ist ein mächtiges Werkzeug für das Terminal, der in der Unixwelt lange Zeit der Standard war und auch heute immer noch weitverbreitet ist

  • Er ist allerdings proprietäre Software, sodass man im Allgemeinen vom Vim - Vi improved redet, wenn man über den Vi spricht
  • Dies ist ein Open Source-Klon des Vi, der auf jedem Linux-System zu finden ist
  • Auch vom Vim existieren eine Reihe Klone, die aber mehr oder weniger den gleichen Ansatz verfolgen
  • Mit gVim existiert ebenfalls eine Version mit grafischer (GTK-) Oberfläche

Vi improved (vim)

Vim funktioniert wie der vi-Editor im Textmodus auf jedem Terminal

  • Die Bedienung erfolgt dann üblicherweise über die Tastatur, eine Maus wird zwar auf vielen Terminals unterstützt, ihre Verwendung ist aber limitiert
  • Das ist zum einen historisch bedingt durch die zu Ur-vi-Zeiten Mitte der 1970er Jahre üblichen Bildschirmterminals mit einer langsamen, seriellen Verbindung zum Hauptrechner, zum anderen schätzen erfahrene Benutzer die Effizienzvorteile der mächtigen Tastatursteuerung („vi is at your fingertips“)
  • Aus der Limitierung damaliger Terminals resultiert sein modales Konzept
  • Vim ist nahezu vollständig abwärtskompatibel zu vi, hat jedoch eine Vielzahl an Weiterentwicklungen und eine moderne grafische Benutzerschnittstelle mit Menüs (GVim) sowie eine vereinfachte Version für Einsteiger (eVim)

Vim kann auf vielen Betriebssystemen genutzt werden und ist auf fast jedem GNU/Linux-Rechner zu finden

  • In der Regel wird beim Aufruf vi unter Linux Vim über eine Verknüpfung oder einen Alias aufgerufen
  • Welcher vi-Ableger gestartet wurde, lässt sich im Kommando-Modus über den Befehl :version überprüfen

Modus

Vim verfügt über verschiedene Arbeitsmodi

Kommandomodus
  • Freies Positionieren innerhalb des Textes
  • Umsetzen von Textblöcken
  • Schreiben und Lesen von Dateien
  • Löschen von Textblöcken und Aufruf von UNIX-Kommandos
Eingabemodus
  • Einfügen von Text
  • Überschreiben vorhandener Textpassagen
Kommandozeilenmodus
(ex-Modus)
  • Dateien speichern, öffnen, wechseln
  • Suchen und ersetzen
  • Konfiguration

Nach dem Aufruf des vi befindet sich der Benutzer im Kommandomodus

Aufruf

vim [Optionen] [Datei]n
vi [Optionen] [Datei]n

Auf vielen Systemen ist die Kurzform vi ausreichend

Optionen

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

Parameter

Umgebungsvariablen

Exit-Status

Hilfen

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

Befehlsmodus

Nach dem Aufruf befindet sich Vim im Befehlsmodus

Vergleichbar mit Klicken durch die Menüs eines grafischen Programms

Tastenkürzel Aktion
j Schritt abwärts
k Schritt aufwärts
h Schritt nach links
l Schritt nach rechts
dd löscht eine komplette Zeile an der Cursorposition
u macht letzte Änderung rückgängig
STRG + R macht u rückgängig
ZZ speichert die Datei und beendet Vim

Einfügemodus

Befindet sich der Vim im Einfügemodus, so kann der Text nach Belieben editiert werden

Tastenkürzel Aktion
i Editiermodus an der Cursorposition starten
a Editiermodus eine Stelle hinter der Cursorposition starten
o Zeile unterhalb der Cursorposition einfügen und Editiermodus starten
ESC Editiermodus verlassen

Kommandozeilenmodus

Neben Befehlen, die zum Bewegen durch die Datei oder deren Modifikation dienen, kann man im Kommandozeilenmodus auch Parameter des Programms selber ändern, Dateien laden und/oder (Shell-) Befehle ausführen

  • Das Verhalten ist mit einer Mini-Kommandozeile vergleichbar
Tastenkürzel Aktion
:w Datei speichern
:w name Datei unter name speichern
:q! Vim ohne Speichern beenden
/ausdruck Datei nach ausdruck durchsuchen
:e dateiname Datei dateiname öffnen
:e # zur zuvor bearbeiteten Datei zurückkehren

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 oder 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

Installation

sudo apt install vim

Anhang

Siehe auch


Dokumentation

Man-Page
Info-Pages

Links

Projekt
Weblinks
  1. http://vim.wikia.com
  2. https://vim.fandom.com/wiki/Search_and_replace
  3. http://wiki.ubuntu-forum.de/index.php?title=Vim
  4. https://linuxwiki.de/Vim