|
|
| (107 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
| Zeile 1: |
Zeile 1: |
| '''topic''' kurze Beschreibung | | '''vim''' - Editor für die Kommandozeile |
|
| |
|
| = Beschreibung = | | == Beschreibung == |
| * 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.
| | ; Der Editor vi (visual) ist ein bildschirmorientierter Editor |
| * Er ist allerdings proprietäre Software, sodass man im Allgemeinen vom Vim - Vi improved redet, wenn man über den Vi spricht. | | * Der Text ist in seiner aktuellen Version auf dem Bildschirm zu sehen |
| * Dies ist ein Open Source-Klon des Vi, der auf jedem Linux-System zu finden ist.
| | * Kann interaktiv |
| * 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. | |
| ** gVim ist auf der Projektseite auch als Windows- und Mac-Version erhältlich.
| |
|
| |
|
| = Installation =
| | ; Der Texteditor Vi ist ein mächtiges Werkzeug für das Terminal |
| # apt install vim
| | 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 |
|
| |
|
| vs.
| | === 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) |
|
| |
|
| # apt install vim-full
| | 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 |
|
| |
|
| = Syntax = | | == Modus == |
| == Parameter ==
| | Vim verfügt über verschiedene Arbeitsmodi |
| == Optionen ==
| |
| {|class="wikitable sortable"
| |
| |-
| |
| | | '''-r ''' || (recovery) Stellt die letzte Datei nach einem Absturz wieder her
| |
| |-
| |
| |}
| |
| | |
| = Konfiguration =
| |
| * Die systemweite Konfigurationsdatei vimrc befindet sich im Verzeichnis /etc/vim/.
| |
| * Änderungen und Einstellungen dort gelten für alle Benutzer.
| |
| * Individuelle Anpassungen können jedoch durch eine eigene Konfigurationsdatei im Benutzerverzeichnis vorgenommen werden.
| |
| * Diese Einstellungen werden in der Datei .vimrc gespeichert. Ist die Datei nicht vorhanden, muss sie erstellt werden:
| |
| vi .vimrc
| |
| | |
| * Weitere Informationen/Einstellungen können in einem zusätzlichen Konfigurationsverzeichnis hinterlegt werden.
| |
| * Konkrete Erläuterungen und Beispiele werden im Artikel '''[[Vim:Konfiguration]]''' beschrieben.
| |
|
| |
|
| * Durch das Belegen von vi-Optionen (Kommando :set) mit einem Wert oder das Setzen von Optionen kann die Arbeitsweise des Editors beeinflußt werden.
| | {| class="wikitable options big" |
| * Die Kommandos set können in ein File mit dem Namen $HOME/.exrc eingetragen werden, welches bei jedem vi-Editoraufruf abgearbeitet wird.
| | | Kommandomodus || |
| {|class="wikitable sortable" | |
| |- | |
| | | ''':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
| |
| |-
| |
| |}
| |
| | |
| == ~/.vimrc ==
| |
| set nocompatible " must be the first line
| |
| syntax on
| |
| 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
| |
| | |
| = Anwendungen =
| |
| | |
| == Einführung ==
| |
| Der Editor vi (visual) ist ein bildschirmorientierter Editor, das heißt der Text ist in seiner aktuellen Version auf dem Bildschirm zu sehen.
| |
| | |
| 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 | | * Freies Positionieren innerhalb des Textes |
| * Umsetzen von Textblöcken | | * Umsetzen von Textblöcken |
| * Schreiben und Lesen von Dateien | | * 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'''
| | |- |
| * Einfügen von Text | | | Eingabemodus || |
| | * 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.
| |
|
| |
| === Starten ===
| |
| '''vi [Dateiname]'''
| |
|
| |
| * 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.
| |
| ** 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.
| |
|
| |
| === Hilfen ===
| |
| {|class="wikitable sortable"
| |
| |-
| |
| | | '''man vi'''
| |
| | | Manualpage von '''vi''' aufrufen
| |
| |-
| |
| | | ''':h <Stichwort>'''
| |
| | | Hilfe aufrufen (mit :q verlassen)
| |
| |-
| |
| | | '''vimtutor'''
| |
| | | Lernprogramm
| |
| |-
| |
| |}
| |
|
| |
| == Cursorpositionierung ==
| |
| Normalerweise ist der '''vi''' an die Pfeiltasten der Tastatur richtig angepasst. Daneben gibt es noch folgende Möglichkeiten (Auswahl):
| |
| {|class="wikitable sortable"
| |
| |-
| |
| | | '''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 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
| |
|
| |
| |- | | |- |
| | | 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 folgendes Format:
| |
| [Anzahl] Befehl [Ort]
| |
|
| |
|
| * Die meisten Befehle sind ein Zeichen lang.
| | == Aufruf == |
| * Mit ''Anzahl'' wird ein Wiederholungsfaktor dür den folgenden Befehl angegeben.
| | <syntaxhighlight lang="bash" highlight="1,2" line copy> |
| * So löscht zum Beispiel der Befehl x</tt> das Zeichen unter der Schreibmarke.
| | vim [Optionen] [Datei]n |
| * Wird <tt>10x eingegeben, werden 10 Zeichen gelöscht.
| | vi [Optionen] [Datei]n |
| | </syntaxhighlight> |
| | Auf vielen Systemen ist die Kurzform ''vi'' ausreichend |
|
| |
|
| 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.
| | === Optionen === |
| | | {| class="wikitable options big" |
| === Allgemeine Befehle === | |
| {|class="wikitable sortable" | |
| |- | | |- |
| | | ''':q'''
| | ! Option !! Beschreibung |
| | | vi beenden (wenn keine Änderungen)
| |
| |-
| |
| | | ''':q!'''
| |
| | | vi beenden und Änderungen verwerfen
| |
| |- | | |- |
| | | -r || (recovery) Stellt die letzte Datei nach einem Absturz wieder her |
| |} | | |} |
| | | === Argumente === |
| === Dateibefehle === | | === Umgebungsvariablen === |
| {|class="wikitable sortable" | | === Exit-Status === |
| | === Hilfen === |
| | {|class="wikitable options big" |
| |- | | |- |
| | | ''':r Datei''' | | | | '''man vi''' |
| | | Text aus der angegebenen Datei nach der momentanen Zeile einfügen | | | | Manualpage von '''vi''' aufrufen |
| |- | | |- |
| | | ''':w''' | | | | ''':h <Stichwort>''' |
| | | Datei speichern | | | | Hilfe aufrufen (mit :q verlassen) |
| |- | | |- |
| | | ''':w!''' | | | | '''vimtutor''' |
| | | Datei speichern und Schreibschutz ignorieren | | | | Lernprogramm |
| |-
| |
| | | ''':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 === | | == Befehlsmodus == |
| Um mehr als eine Datei zu bearbeiten, können beim Aufruf mehrere Dateinamen übergeben oder nachträglich weitere Dateien geöffnet werden.
| | ; Nach dem Aufruf befindet sich Vim im Befehlsmodus |
| {|class="wikitable sortable"
| | Vergleichbar mit Klicken durch die Menüs eines grafischen Programms |
| |-
| |
| | | ''':e Datei'''
| |
| | | Neue Datei bearbeiten
| |
| |-
| |
| | | ''':n'''
| |
| | | Wechselt zur nächsten geladenen Datei
| |
| |-
| |
| |}
| |
|
| |
|
| === Blättern auf dem Bildschirm ===
| | {| class="wikitable options big" |
| Normalerweise ist der '''vi''' an die Pfeiltasten der Tastatur richtig angepasst. Daneben gibt es noch folgende Möglichkeiten (Auswahl):
| | ! Tastenkürzel !! Aktion |
| | |
| {|class="wikitable sortable" | |
| |- | | |- |
| | | '''STRG-F ''' | | | j || Schritt abwärts |
| | | Eine Bildschirmseite vorwärts | | |- |
| | | k || Schritt aufwärts |
| |- | | |- |
| | | '''STRG-B ''' | | | h || Schritt nach links |
| | | Eine Bildschirmseite rückwärts | |
| |- | | |- |
| | | '''STRG-D ''' | | | l || Schritt nach rechts |
| | | Eine halbe Bildschirmseite vorwärts | |
| |- | | |- |
| | | '''STRG-U''' | | | dd || löscht eine komplette Zeile an der Cursorposition |
| | | Eine halbe Bildschirmseite rückwärts | |
| |- | | |- |
| | | '''STRG-L ''' | | | u || macht letzte Änderung rückgängig |
| | | Bildschirm neu aufbauen (wenn zum Beispiel eine Nachricht kam) | |
| |- | | |- |
| |} | | | STRG + R || macht u rückgängig |
| | |
| === Texteingabe ===
| |
| {|class="wikitable sortable"
| |
| |- | |
| | | '''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
| |
| |- | | |- |
| | | ZZ || speichert die Datei und beendet Vim |
| |} | | |} |
| Der Eingabemodus wird durch Drücken der [ESC]-Taste verlassen.
| |
|
| |
|
| === Text ändern === | | == Einfügemodus == |
| {|class="wikitable sortable" | | Befindet sich der Vim im Einfügemodus, so kann der Text nach Belieben editiert werden |
| |-
| | {| class="wikitable options big" |
| | | '''~'''
| | ! Tastenkürzel !! Aktion |
| | | Wechsel Groß-/Kleinbuchstaben (kein Abschluss mit [ESC])
| |
| |-
| |
| | | '''r '''
| |
| | | Zeichen ersetzen (kein Abschluss mit [ESC])
| |
| |-
| |
| | | '''R '''
| |
| | | Mehrere Zeichen ersetzen
| |
| |- | | |- |
| | | '''s ''' | | | i || Editiermodus an der Cursorposition starten |
| | | Ein Zeichen ersetzen und zusätzliche Zeichen anschließend einfügen | |
| |- | | |- |
| | | '''cc ''' | | | a || Editiermodus eine Stelle hinter der Cursorposition starten |
| | | Gesamte Zeile ändern | |
| |- | | |- |
| | | '''cw ''' | | | o || Zeile unterhalb der Cursorposition einfügen und Editiermodus starten |
| | | Wort ändern | |
| |-
| |
| | | '''C'''
| |
| | | ab Cursorposition bis Zeilenende ändern
| |
| |-
| |
| | | '''J '''
| |
| | | Zeilen verbinden (nächste Zeile anhängen)
| |
| |- | | |- |
| | | ESC || Editiermodus verlassen |
| |} | | |} |
|
| |
|
| === Text ausschneiden === | | == Kommandozeilenmodus == |
| {|class="wikitable sortable" | | 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 |
| | {| class="wikitable options big" |
| | ! Tastenkürzel !! Aktion |
| |- | | |- |
| | | '''x ''' | | | :w || Datei speichern |
| | | Zeichen unter dem Cursor löschen | |
| |- | | |- |
| | | '''X ''' | | |:w name || Datei unter name speichern |
| | | Zeichen vor dem Cursor löschen | |
| |- | | |- |
| | | '''dw ''' | | | :q! || Vim ohne Speichern beenden |
| | | ab Cursorposition bis Wortende löschen | |
| |- | | |- |
| | | '''db ''' | | | /ausdruck || Datei nach ''ausdruck'' durchsuchen |
| | | ab Cursorposition bis Wortanfang löschen
| |
| |- | | |- |
| | | <u>'''''n''</u>dd ''' | | | :e ''dateiname'' || Datei ''dateiname'' öffnen |
| | | <u>'''''n'''''</u> ganze Zeile löschen
| |
| |- | |
| | | '''D''' | |
| | | Ab Cursor bis Zeilenende löschen
| |
| |- | | |- |
| | | :e # || zur zuvor bearbeiteten Datei zurückkehren |
| |} | | |} |
| Gelöschte Zeichen werden im anonymen Puffer abgelegt.
| |
|
| |
|
| === Kopieren und Einfügen === | | == Cursorpositionierung == |
| * Yank wird in der Regel mit einem zweiten Steuerbuchstaben kombiniert, der angibt, wie viel Text gepuffert wird. (z. B. "'''yw'''</tt>", "y$").
| | Normalerweise ist der '''vi''' an die Pfeiltasten der Tastatur richtig angepasst |
| * Vor "<tt>'''yy'''</tt>" kann noch die Anzahl der zu kopierenden Zeilen stehen (z. B. <tt>'''12yy'''). | | * Daneben gibt es noch folgende Möglichkeiten (Auswahl) |
| {|class="wikitable sortable" | | {|class="wikitable options big" |
| |- | | |- |
| | | '''yy oder Y''' | | | | '''h ''' |
| | | (Yank) ganze Zeile in anonymen Puffer kopieren | | | | Zeichen links (auch Backspace) |
| |- | | |- |
| | | '''yw''' | | | | '''l ''' |
| | | Bis zum nächsten Wort kopieren | | | | Zeichen rechts (auch blank) |
| |- | | |- |
| | | '''Y$''' | | | | '''k ''' |
| | | Bis Zeilenende kopieren | | | | Zeile höher |
| |- | | |- |
| | | '''p''' | | | | '''j ''' |
| | | Hinter dem Cursor einfügen | | | | Zeile tiefer |
| |- | | |- |
| | | '''P''' | | | | '''b ''' |
| | | Vor dem Cursor einfügen | | | | Wortanfang |
| |- | | |- |
| |} | | | | '''e ''' |
| | | | | Wortende |
| === Suchen und Ersetzen ===
| |
| Außer ''''fx''''</tt> und <tt>''''Fx'''' müssen die Suchkommandos mit der Return-Taste abgeschlossen werden.
| |
| {|class="wikitable sortable"
| |
| |- | | |- |
| | | '''fx ''' | | | | '''w ''' |
| | | Zeichen ''''x'''' in der momentanen Zeile suchen (vorwärts) | | | | Anfang nächstes Wort |
| |- | | |- |
| | | '''Fx ''' | | | | '''H ''' |
| | | Zeichen ''''x'''' in der momentanen Zeile suchen (rückwärts) | | | | Anfang erste Zeile des Bildschirms |
| |- | | |- |
| | | '''/str ''' | | | | '''L ''' |
| | | String ''''str'''' vorwärts in der Datei suchen | | | | Anfang letzten Zeile des Bildschirms |
| |- | | |- |
| | | '''?str ''' | | | | '''0 (Null) ''' |
| | | String ''''str'''' rückwärts in der Datei suchen | | | | Zeilenanfang |
| |- | | |- |
| | | '''// ''' | | | | '''$ ''' |
| | | Letzten Suchbefehl wiederholen (vorwärts) | | | | Zeilenende |
| |- | | |- |
| | | '''?? ''' | | | | '''RETURN ''' |
| | | Letzten Suchbefehl wiederholen (rückwärts) | | | | nächste Zeile |
| |- | | |- |
| | | ''':%s/X/Y/g''' | | | | <u>'''''n''</u>G ''' |
| | | Ersetzt alle 'X' durch 'Y' | | | | (''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 oder schließende Klammer |
| === Sonstige Kommandos ===
| |
| {|class="wikitable sortable"
| |
| |- | | |- |
| | | '''u ''' | | | | '''(''' |
| | | Letzten Befehl rückgängig machen | | | | Cursor zum Anfang des Satzes bewegen |
| |- | | |- |
| | | '''U ''' | | | | ''')''' |
| | | Aktuelle Zeile wiederherstellen | | | | Cursor zum Anfang des nächsten Satzes bewegen |
| |- | | |- |
| | | '''. ''' | | | | '''{''' |
| | | Letztes Kommando wiederholen | | | | Cursor zum Anfang des Absatzes bewegen |
| |- | | |- |
| | | ''':!cmd''' | | | | '''}''' |
| | | Verlässt vi temporär und führt das Kommando ''cmd'' aus (ggf. Rückkehr mit exit) | | | | Cursor zum Anfang des nächsten Absatzes bewegen |
| |-
| |
| | | ''':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 === | | == Installation == |
| {|class="wikitable sortable"
| | <syntaxhighlight lang="bash" highlight="1" line copy> |
| |-
| | sudo apt install vim |
| | | '''v'''
| | </syntaxhighlight> |
| | | Visuelles Markieren
| |
| |-
| |
| | | '''m<u>''A'''''</u>
| |
| | | Marke <u>'''''A'''''</u> setzen
| |
| |-
| |
| | | ''''<u>''A'''''</u>
| |
| | | Zur Marke <u>'''''A'''''</u> springen
| |
| |-
| |
| | | '''d'<u>''A'''''</u>
| |
| | | Bis Marke <u>'''''A'''''</u> löschen
| |
| |-
| |
| | | '''y'<u>''A'''''</u>
| |
| | | Kopieren bis Marke <u>'''''A'''''</u>
| |
| |-
| |
| |}
| |
| | |
| === Einrücken und klammern ===
| |
| {|class="wikitable sortable"
| |
| |-
| |
| | | '''<<'''
| |
| | | 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
| |
| |-
| |
| |}
| |
| | |
| == 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'''</tt>" oder "<tt>'''yy'''" in den Puffer g'''ebracht. 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, zum Beispiel:
| |
| | |
| {|class="wikitable sortable"
| |
| |-
| |
| | | '''"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'''</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 '''
| |
| | |
| = Vi/Vim =
| |
| * Texteditor für Programmierer: dient zum bearbeiten von Dateien.
| |
| * Ein Vorteil ist hier die Umschaltung zwischen Befehls- und Eingabemodus.
| |
| * Beim Start befindet sich Vi im '''Befehls'''-Modus.
| |
| | |
| mit ['''i'''] (Eingabe links vom Cursor) oder ['''I'''] (Eingabe am Zeilenanfang) kommt man in den '''Editor'''-Modus.
| |
| | |
| ['''Esc'''] schaltet zurück in den '''Befehls'''-Modus.
| |
| | |
| == Anwendung ==
| |
| Vim verfügt über drei verschiedene Arbeitsmodi. Diese werden im folgenden kurz beschrieben. Die wichtigsten Tastenkürzel zur Arbeit mit dem Vim werden im Artikel Vim/Shortcuts erläutert.
| |
| | |
| == Befehlsmodus ==
| |
| * Direkt nach dem Aufruf befindet sich der Editor im sogenannten Befehlsmodus.
| |
| * In diesem nimmt er Befehle entgegen und führt sie aus.
| |
| * Sehr abstrakt betrachtet kann man dieses Vorgehen mit dem Klicken durch die Menüs eines Programms vergleichen.
| |
| | |
| <table >
| |
| <tr>
| |
| <th> Tastenkürzel </th>
| |
| <th align="lifte"> Aktion </th>
| |
| </tr>
| |
| | |
| <tr>
| |
| <td align="center"> j</td>
| |
| <td align="center"> Schritt abwärts </td>
| |
| </tr>
| |
| | |
| <tr>
| |
| <td align="center"> k </td>
| |
| <td align="center" > Schritt aufwärts </td>
| |
| </tr>
| |
| | |
| <tr>
| |
| <td align="center"> h </td>
| |
| <td align="center"> Schritt nach links </td>
| |
| </tr>
| |
| | |
| <tr>
| |
| <td align="center"> l </td>
| |
| <td align="center"> Schritt nach rechts </td>
| |
| </tr>
| |
| | |
| <tr>
| |
| <td align="center"> dd </td>
| |
| <td align="center"> löscht eine komplette Zeile an der Cursorposition </td>
| |
| </tr>
| |
| | |
| <tr>
| |
| <td align="center"> u </td>
| |
| <td align="center"> macht letzte Änderung rückgängig </td>
| |
| </tr>
| |
| | |
| <tr>
| |
| <td align="center"> STRG + R </td>
| |
| <td align="center"> macht u rückgängig </td>
| |
| </tr>
| |
| | |
| <tr>
| |
| <td align="center"> ZZ </td>
| |
| <td align="center"> speichert die Datei und beendet Vim </td>
| |
| </tr>
| |
| </table>
| |
| | |
| ==Einfügemodus ==
| |
| Befindet sich der Vim im Einfügemodus, so kann der Text nach Belieben editiert werden.
| |
| | |
| <table >
| |
| <tr>
| |
| <th> Tastenkürzel </th>
| |
| <th align="lifte"> Aktion </th>
| |
| </tr>
| |
| | |
| <tr>
| |
| <td align="center"> i</td>
| |
| <td align="center"> Editiermodus an der Cursorposition starten </td>
| |
| </tr>
| |
| | |
| <tr>
| |
| <td align="center"> a </td>
| |
| <td align="center" > Editiermodus eine Stelle hinter der Cursorposition starten </td>
| |
| </tr>
| |
| | |
| <tr>
| |
| <td align="center"> o </td>
| |
| <td align="center"> Zeile unterhalb der Cursorposition einfügen und Editiermodus starten </td>
| |
| </tr>
| |
| | |
| <tr>
| |
| <td align="center"> ESC </td>
| |
| <td align="center"> Editiermodus beenden </td>
| |
| </tr>
| |
| </table>
| |
| | |
| == 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.
| |
| | |
| <table >
| |
| <tr>
| |
| <th> Tastenkürzel </th>
| |
| <th align="lifte"> Aktion </th>
| |
| </tr>
| |
| | |
| <tr>
| |
| <td align="center"> :w</td>
| |
| <td align="center"> Datei speichern </td>
| |
| </tr>
| |
| | |
| <tr>
| |
| <td align="center"> :w name </td>
| |
| <td align="center" > Datei unter name speichern </td>
| |
| </tr>
| |
| | |
| <tr>
| |
| <td align="center"> :q! </td>
| |
| <td align="center"> Vim ohne Speichern beenden </td>
| |
| </tr>
| |
| | |
| <tr>
| |
| <td align="center"> /such_ausdruck </td>
| |
| <td align="center"> Datei nach such_ausdruck durchsuchen </td>
| |
| </tr>
| |
| | |
| <tr>
| |
| <td align="center"> :e datei_name </td>
| |
| <td align="center"> Datei datei_name öffnen </td>
| |
| </tr>
| |
|
| |
|
| <tr>
| | == Anhang == |
| <td align="center"> :e # </td>
| | === Siehe auch === |
| <td align="center"> zur zuvor bearbeiteten Datei zurückkehren </td>
| | * [[gvim]] |
| </tr>
| | ---- |
| </table>
| | {{Special:PrefixIndex/{{BASEPAGENAME}}/}} |
|
| |
|
| = Links = | | === Dokumentation === |
| == Dateien == | | ; Man-Page |
| == Man-Pages == | | ;Info-Page |
| == Intern == | | === Links === |
| == Weblinks == | | ==== Projekt ==== |
| # http://vim.wikia.com | | ==== Weblinks ==== |
| | # https://vim.wikia.com |
| # https://vim.fandom.com/wiki/Search_and_replace | | # https://vim.fandom.com/wiki/Search_and_replace |
| # http://wiki.ubuntu-forum.de/index.php?title=Vim | | # https://wiki.ubuntu-forum.de/index.php?title=Vim |
| # https://linuxwiki.de/Vim | | # https://linuxwiki.de/Vim |
|
| |
|
| | {{DEFAULTSORT:vim}} |
| | {{DISPLAYTITLE:vim}} |
|
| |
|
| =Kontrollfragen=
| | [[Kategorie:vim]] |
| <div class="toccolours mw-collapsible mw-collapsed">
| | [[Kategorie:Linux/Befehl]] |
| ''Testfrage 1''
| |
| <div class="mw-collapsible-content">'''Antwort1'''</div>
| |
| </div>
| |
| <div class="toccolours mw-collapsible mw-collapsed">
| |
| ''Testfrage 2''
| |
| <div class="mw-collapsible-content">'''Antwort2'''</div>
| |
| </div>
| |
| <div class="toccolours mw-collapsible mw-collapsed">
| |
| ''Testfrage 3''
| |
| <div class="mw-collapsible-content">'''Antwort3'''</div>
| |
| </div>
| |
| <div class="toccolours mw-collapsible mw-collapsed">
| |
| ''Testfrage 4''
| |
| <div class="mw-collapsible-content">'''Antwort4'''</div>
| |
| </div>
| |
| <div class="toccolours mw-collapsible mw-collapsed">
| |
| ''Testfrage 5''
| |
| <div class="mw-collapsible-content">'''Antwort5'''</div>
| |
| </div>
| |
|
| |
|
| [[Category:Linux:Editoren]]
| | </noinclude> |
| [[Category:Linux:Befehl]]
| |