Linux vi/vim
Alle Unix-ähnlichen Systeme haben den vi-Texteditor integriert; andere Texteditoren müssen nicht unbedingt vorhanden sein.
Allerdings verwenden wir derzeit häufiger den vim-Editor.
vim hat die Fähigkeit zur Programmbearbeitung; es kann aktiv Schriftfarben verwenden, um die Korrektheit der Syntax zu unterscheiden, was für das Programmdesign praktisch ist.
Verwandte Artikel:Die vollständigste Vim-Tastenkürzel-Übersicht — Vom Anfänger bis zum Fortgeschrittenen
Was ist vim?
Vim ist ein aus vi entwickelter Texteditor. Er bietet besonders reichhaltige Funktionen, die das Programmieren erleichtern, wie Codevervollständigung, Kompilierung und Fehlersprung, und wird unter Programmierern weit verbreitet verwendet.
Einfach gesagt ist vi ein altmodisches Textverarbeitungsprogramm, aber seine Funktionen sind bereits recht vollständig; es gibt noch Verbesserungspotenzial. vim kann als ein sehr nützliches Werkzeug für Programmentwickler bezeichnet werden.
Sogar die offizielle Website von vim (https://www.vim.org/) sagt selbst, dass vim ein Programmentwicklungswerkzeug und keine Textverarbeitungssoftware ist.
vim-Tastaturbelegung
↑ Klicken Sie auf eine beliebige Taste, um detaillierte Beschreibungen und Anwendungsbeispiele anzuzeigen
Verwendung von vi/vim
Grundsätzlich ist vi/vim in drei Modi unterteilt:Befehlsmodus, Einfügemodus und Kommandozeilenmodus。
Befehlsmodus
Sobald der Benutzer vi/vim startet, gelangt er in den Befehlsmodus.
In diesem Zustand werden Tastaturaktionen von Vim als Befehle und nicht als Zeicheneingabe erkannt. Wenn wir beispielsweiseidrücken, wird kein Zeichen eingegeben;ies wird als Befehl behandelt.
Im Folgenden finden Sie einige häufig verwendete Befehle im Normalmodus:
- i-- In den Einfügemodus wechseln und an der aktuellen Cursorposition mit der Texteingabe beginnen.
- x-- Das Zeichen an der aktuellen Cursorposition löschen.
- :-- In den Kommandozeilenmodus wechseln, um in der untersten Zeile einen Befehl einzugeben.
- a: Eine neue Zeile unterhalb der aktuellen Zeile einfügen und in den Insert-Modus wechseln.
- o-- Eine neue Zeile oberhalb der aktuellen Zeile einfügen und in den Insert-Modus wechseln.
- O-- Die aktuelle Zeile ausschneiden.
- dd-- Die aktuelle Zeile kopieren.
- yy(Kleinbuchstabe) -- Inhalt der Zwischenablage unterhalb des Cursors einfügen.
- p(Großbuchstabe) -- Inhalt der Zwischenablage oberhalb des Cursors einfügen.
- P-- Die letzte Operation rückgängig machen.
- u-- Die letzte rückgängig gemachte Operation wiederherstellen.
- Strg + r-- Die Datei speichern.
- :w-- Den Vim-Editor beenden.
- :q-- Den Vim-Editor ohne Speichern von Änderungen zwangsweise beenden.
- :q!Wenn Sie Text bearbeiten möchten, starten Sie einfach Vim, wechseln Sie in den Kommando-Modus und drücken Sie
um in den Einfügemodus zu wechseln.iDer Befehlsmodus verfügt nur über einige der grundlegendsten Befehle, daher müssen Sie sich weiterhin auf
den Kommandozeilenmodusum weitere Befehle einzugeben.Einfügemodus
Einfügemodus
um in den Einfügemodus zu gelangen. Verwenden Sie dieiTaste, um in den Normalmodus zurückzukehren.EscIm Einfügemodus können Sie die folgenden Tasten verwenden:
Zeichentasten und Shift-Kombinationen
- , Zeichen eingeben, Enter-Taste, Zeilenumbruch
- ENTER, Backspace-Taste, löscht das Zeichen vor dem Cursor
- BACK SPACE, Delete-Taste, löscht das Zeichen nach dem Cursor
- DELPfeiltasten
- , den Cursor im Text bewegen, den Cursor an den Anfang/das Ende der Zeile bewegen
- HOME/END, Bild auf/ab
- Page Up/Page Down, Cursor zwischen Einfüge-/Ersetzenmodus umschalten; der Cursor wird zu einer vertikalen Linie/einem Unterstrich
- Insert, Einfügemodus verlassen und in den Befehlsmodus wechseln
- ESCKommandozeilenmodus
Kommandozeilenmodus
(englischer Doppelpunkt), um den Kommandozeilenmodus aufzurufen.:Im Kommandozeilenmodus können Sie Befehle mit einem einzelnen Zeichen oder mit mehreren Zeichen eingeben; es gibt viele verfügbare Befehle.
Im Kommandozeilenmodus sind die grundlegenden Befehle (der Doppelpunkt wurde weggelassen):
: Datei speichern.
:w: Vim-Editor beenden.:q: Datei speichern und Vim-Editor beenden.:wq: Vim-Editor ohne Speichern der Änderungen zwangsweise beenden.:q!Mit der Taste lässt sich der Kommandozeilenmodus jederzeit verlassen.
Drücken SieESCEinfach gesagt, können wir uns diese drei Modi wie im folgenden Diagramm dargestellt vorstellen:
vi/vim-Anwendungsbeispiele
vi/vim-Anwendungsbeispiele
Verwenden Sie vi/vim, um in den Normalmodus zu wechseln.
Direkt eingeben
$ vim example.txt
vi filenameund Sie gelangen in den Normalmodus von vi. Bitte beachten Sie, dass Sie nach vi immer einen Dateinamen angeben müssen, unabhängig davon, ob die Datei existiert oder nicht!Drücken Sie i, um in den Einfügemodus (auch Editiermodus genannt) zu wechseln und mit der Textbearbeitung zu beginnen.
Drücken Sie i, um in den Einfügemodus (auch Editiermodus genannt) zu wechseln und mit der Textbearbeitung zu beginnen.
Im Editiermodus werden Sie feststellen, dass der Text –INSERT- in der Statusleiste in der unteren linken Ecke erscheint; das ist der Hinweis darauf, dass Sie beliebige Zeichen eingeben können.
Zu diesem Zeitpunkt können auf der Tastatur außer
dieser Taste alle anderen Tasten als normale Eingabetasten behandelt werden, sodass Sie beliebige Bearbeitungen vornehmen können.EscDrücken Sie die ESC-Taste, um in den Normalmodus zurückzukehren.
Drücken Sie die ESC-Taste, um in den Normalmodus zurückzukehren.
diese Taste! Sie werden sofort sehen, dass die Anzeige – INSERT – in der unteren linken Ecke des Bildschirms verschwunden ist!EscDrücken Sie im Normalmodus
Drücken Sie im Normalmodus:wqSpeichern und vi beenden
und Sie können speichern und beenden!:wqOK! Auf diese Weise haben wir erfolgreich eine Datei example.txt erstellt.
vi/vim-Tastenübersicht
vi/vim-Tastenübersicht
Teil 1: Cursorbewegung, Kopieren und Einfügen, Suchen und Ersetzen usw., verfügbar im Normalmodus
Teil 1: Cursorbewegung, Kopieren und Einfügen, Suchen und Ersetzen usw., verfügbar im Normalmodus
| h oder Pfeiltaste nach links (←) | |
|---|---|
| Bewege den Cursor um ein Zeichen nach links | j oder Pfeiltaste nach unten (↓) |
| Bewege den Cursor um ein Zeichen nach unten | k oder Pfeiltaste nach oben (↑) |
| Bewege den Cursor um ein Zeichen nach oben | l oder Pfeiltaste nach rechts (→) |
| Bewege den Cursor um ein Zeichen nach rechts | Wenn du deine rechte Hand auf die Tastatur legst, wirst du feststellen, dass hjkl zusammen angeordnet sind, sodass du diese vier Tasten verwenden kannst, um den Cursor zu bewegen. |
| Wenn du den Cursor mehrfach bewegen möchtest, zum Beispiel 30 Zeilen nach unten, kannst du die Tastenkombination "30j" oder "30↓" verwenden. Das heißt: Nachdem du die gewünschte Zahl (number) eingegeben hast, drücke die Aktionstaste! | |
| [Ctrl] + [f] | Bewege den Bildschirm um eine Seite 'nach unten', entspricht der Taste [Page Down] (üblich) |
| [Ctrl] + [b] | Bewege den Bildschirm um eine Seite 'nach oben', entspricht der Taste [Page Up] (gebräuchlich) |
| [Ctrl] + [d] | Bewege den Bildschirm um eine halbe Seite 'nach unten' |
| [Ctrl] + [u] | Bewege den Bildschirm um eine halbe Seite 'nach oben' |
| + | Bewege den Cursor zum ersten nicht-leeren Zeichen der nächsten Zeile |
| - | Bewege den Cursor zum ersten nicht-leeren Zeichen der vorherigen Zeile |
| n<space> | Das n steht für eine "Zahl", zum Beispiel 20. Nachdem die Zahl gedrückt wurde, drücke die Leertaste, und der Cursor bewegt sich in dieser Zeile um n Zeichen nach rechts. Zum Beispiel bewegt 20<space> den Cursor 20 Zeichen vorwärts. |
| 0 oder die Funktionstaste [Home] | Dies ist die Zahl "0": Bewege dich zum allerersten Zeichen dieser Zeile (gebräuchlich) |
| $ oder die Funktionstaste [End] | Zum allerletzten Zeichen dieser Zeile springen (häufig) |
| H | Den Cursor zum ersten Zeichen der obersten Zeile auf diesem Bildschirm bewegen |
| M | Den Cursor zum ersten Zeichen der mittleren Zeile auf diesem Bildschirm bewegen |
| L | Den Cursor zum ersten Zeichen der untersten Zeile auf diesem Bildschirm bewegen |
| G | Zur letzten Zeile dieser Datei springen (häufig) |
| nG | n ist eine Zahl. Zur Zeile n dieser Datei springen. Zum Beispiel springt 20G zur Zeile 20 dieser Datei (kann mit :set nu verwendet werden) |
| gg | Zur ersten Zeile dieser Datei springen, äquivalent zu 1G! (häufig) |
| n<Enter> | n ist eine Zahl. Den Cursor n Zeilen nach unten bewegen (häufig) |
| Suchen und ersetzen | |
| /word | Suche vom Cursor aus abwärts nach einer Zeichenkette namens word. Um zum Beispiel in der Datei nach der Zeichenkette vbird zu suchen, tippen Sie einfach /vbird ein! (häufig) |
| ?word | Suche vom Cursor aus aufwärts nach einer Zeichenkette namens word. |
| n | Dieses n ist eine englische Taste. Es bedeutet, die vorherige Suchaktion zu wiederholen. Wenn wir zum Beispiel gerade /vbird ausgeführt haben, um abwärts nach der Zeichenkette vbird zu suchen, wird nach Drücken von n weiter abwärts nach der nächsten Zeichenkette namens vbird gesucht. Wenn wir ?vbird ausgeführt haben, wird nach Drücken von n weiter aufwärts nach der Zeichenkette vbird gesucht! |
| N | Dieses N ist eine englische Taste. Es ist genau das Gegenteil von n und führt die vorherige Suchaktion in die „umgekehrte“ Richtung aus. Zum Beispiel bedeutet nach /vbird das Drücken von N, dass „aufwärts“ nach vbird gesucht wird. |
| Die Verwendung von /word zusammen mit n und N ist sehr hilfreich! Sie ermöglicht es Ihnen, die gesuchten Schlüsselwörter wiederholt zu finden! | |
| :n1,n2s/word1/word2/g | n1 und n2 sind Zahlen. Zwischen den Zeilen n1 und n2 suchen Sie die Zeichenkette word1 und ersetzen sie durch word2! Um zum Beispiel zwischen den Zeilen 100 und 200 nach vbird zu suchen und es durch VBIRD zu ersetzen: ':100,200s/vbird/VBIRD/g'. (häufig) |
| :1,$s/word1/word2/goder:%s/word1/word2/g | Von der ersten Zeile bis zur letzten Zeile die Zeichenkette word1 suchen und sie durch word2 ersetzen! (häufig) |
| :1,$s/word1/word2/gcoder:%s/word1/word2/gc | Von der ersten Zeile bis zur letzten Zeile die Zeichenkette word1 suchen und sie durch word2 ersetzen! Außerdem vor dem Ersetzen eine Aufforderung anzeigen, damit der Benutzer bestätigt, ob ersetzt werden soll! (häufig) |
| Löschen, Kopieren und Einfügen | |
| x, X | In einer Zeile löscht x ein Zeichen nach rechts (entspricht der [del]-Taste), und X löscht ein Zeichen nach links (entspricht der [backspace]-Taste, d. h. der Rücktaste) (häufig) |
| nx | n ist eine Zahl. Lösche n Zeichen nacheinander nach rechts. Um beispielsweise 10 Zeichen nacheinander zu löschen, verwende '10x'. |
| dd | Die gesamte Zeile, in der sich der Cursor befindet, ausschneiden (häufig); zum Einfügen p/P verwenden. |
| ndd | n ist eine Zahl. Schneide n Zeilen vom Cursor nach unten aus. Zum Beispiel schneidet 20dd 20 Zeilen aus (häufig); zum Einfügen p/P verwenden. |
| d1G | Alle Daten vom Cursor bis zur ersten Zeile löschen |
| dG | Alle Daten vom Cursor bis zur letzten Zeile löschen |
| d$ | Lösche von der Cursorposition bis zum letzten Zeichen der Zeile |
| d0 | Das ist die Zahl 0. Lösche von der Cursorposition bis zum ersten Zeichen der Zeile |
| yy | Kopiere die Zeile, in der sich der Cursor befindet (gebräuchlich) |
| nyy | n ist eine Zahl. Kopiere n Zeilen ab dem Cursor nach unten. Zum Beispiel kopiert 20yy 20 Zeilen (gebräuchlich) |
| y1G | Kopiere alle Daten von der Cursorzeile bis zur ersten Zeile |
| yG | Kopiere alle Daten von der Cursorzeile bis zur letzten Zeile |
| y0 | Kopiere alle Daten vom Zeichen an der Cursorposition bis zum Anfang der Zeile |
| y$ | Kopiere alle Daten vom Zeichen an der Cursorposition bis zum Ende der Zeile |
| p, P | p fügt die kopierten Daten in der Zeile unterhalb des Cursors ein, und P fügt sie in der Zeile oberhalb des Cursors ein! Wenn sich der Cursor beispielsweise gerade in Zeile 20 befindet und 10 Zeilen Daten kopiert wurden, dann werden diese 10 Zeilen nach dem Drücken von p nach der ursprünglichen Zeile 20 eingefügt, also ab Zeile 21. Aber was ist, wenn Sie P drücken? Dann wird die ursprüngliche Zeile 20 nach unten verschoben und wird zu Zeile 30. (gebräuchlich) |
| J | Füge die Zeile, in der der Cursor steht, mit den Daten der nächsten Zeile zu einer Zeile zusammen |
| c | Wiederhole das Löschen mehrerer Daten, zum Beispiel 10 Zeilen nach unten löschen, [10cj] |
| u | Die vorherige Aktion rückgängig machen. (häufig) |
| [Ctrl]+r | Die vorherige Aktion wiederholen. (häufig) |
| Die Tasten u und [Ctrl]+r sind sehr gebräuchliche Befehle! Eine ist Rückgängig, die andere ist Wiederholen. Mit diesen beiden Funktionstasten wird dein Bearbeiten – hehe! – ganz vergnüglich sein! | |
| . | Zweifle nicht daran! Das ist der Dezimalpunkt! Er bedeutet, die vorherige Aktion zu wiederholen. Wenn du Löschen, Einfügen usw. wiederholen möchtest, drücke einfach den Dezimalpunkt '.'! (häufig) |
Teil 2: Beschreibung der Tasten, die für den Wechsel vom Normalmodus in den Bearbeitungsmodus verfügbar sind
| In den Eingabe- oder Ersetzungsmodus wechseln | |
|---|---|
| i, I | In den Einfügemodus wechseln: i bedeutet "Eingabe ab der aktuellen Cursorposition", I bedeutet "mit der Eingabe beim ersten Nicht-Leerzeichen der aktuellen Zeile beginnen". (häufig)) |
| a, A | In den Einfügemodus wechseln: a bedeutet "mit der Eingabe beim nächsten Zeichen nach dem aktuellen Cursor beginnen", A bedeutet "mit der Eingabe beim letzten Zeichen der aktuellen Zeile beginnen". (häufig)) |
| o, O | In den Einfügemodus wechseln: Dies sind die Groß- und Kleinbuchstabenformen des englischen Buchstabens o. o öffnet eine neue Zeile unterhalb der aktuellen Cursorzeile; O öffnet eine neue Zeile oberhalb der aktuellen Cursorzeile! (häufig)) |
| r, R | In den Ersetzen-Modus wechseln: r ersetzt nur einmal das einzelne Zeichen an der Cursorposition; R ersetzt den Text an der Cursorposition weiter, bis ESC gedrückt wird; (häufig)) |
| Bei den oben genannten Tasten erscheint der Text "--INSERT--" oder "--REPLACE--" in der linken unteren Ecke des vi-Bildschirms. Man kann am Namen erkennen, um welche Aktion es sich handelt!! Beachten Sie insbesondere, wie oben erwähnt: Wenn Sie Zeichen in die Datei eingeben möchten, müssen Sie INSERT oder REPLACE in der linken unteren Ecke sehen, bevor Sie eingeben können! | |
| [Esc] | Bearbeitungsmodus verlassen und zum Normalmodus zurückkehren (häufig)) |
Teil 3: Beschreibung der Tasten, die für den Wechsel vom Normalmodus in den Kommandozeilenmodus verfügbar sind
| Befehle zum Speichern, Beenden usw. im Kommandozeilenmodus | |
|---|---|
| :w | Die bearbeiteten Daten in eine Datei auf der Festplatte schreiben (häufig)) |
| :w! | Wenn das Dateiattribut "read-only" ist, das Schreiben in diese Datei erzwingen. Ob Sie jedoch tatsächlich schreiben können, hängt weiterhin von Ihren Dateiberechtigungen für diese Datei ab! |
| :q | vi beenden (häufig)) |
| :q! | Wenn Sie die Datei geändert haben, sie aber nicht speichern möchten, verwenden Sie !, um das Beenden ohne Speichern der Datei zu erzwingen. |
| Beachten Sie, dass das Ausrufezeichen (!) in vi oft "force" bedeutet. | |
| :wq | Speichern und dann beenden; bei :wq! erzwingt es das Speichern und beendet dann (häufig)) |
| ZZ | Dies ist ein großes Z! Wenn geändert, die aktuelle Datei speichern, dann beenden! Es entspricht (Speichern und Beenden). |
| ZQ | Nicht speichern, Beenden erzwingen. Entspricht:q!。 |
| :w [filename] | Die bearbeiteten Daten als andere Datei speichern (ähnlich wie Speichern unter). |
| :r [filename] | Während der Bearbeitung die Daten einer anderen Datei einlesen. Das heißt, den Inhalt der Datei 'filename' nach der Zeile anhängen, in der sich der Cursor befindet. |
| :n1,n2 w [filename] | Inhalt von n1 bis n2 als Datei filename speichern. |
| :! command | vi vorübergehend verlassen und das Anzeigeergebnis von command im Kommandozeilenmodus ausführen! Zum Beispiel ':! ls /home' ermöglicht es Ihnen, die von ls unter /home ausgegebenen Dateiinformationen in vi anzuzeigen! |
| Ändern der vim-Umgebung | |
| :set nu | Zeilennummern anzeigen. Nach dem Setzen wird die Zeilennummer als Präfix vor jeder Zeile angezeigt. |
| :set nonu | Das Gegenteil von set nu: Es hebt die Zeilennummern auf! |
Besonders zu beachten: In vi/vim haben Zahlen eine große Bedeutung! Eine Zahl bedeutet normalerweise, etwas so oft zu wiederholen! Sie kann auch bedeuten, zu einem bestimmten "n-ten" Element zu gehen.
Zum Beispiel verwendest du zum Löschen von 50 Zeilen '50dd', richtig! Die Zahl wird vor die Aktion gesetzt. Wenn ich beispielsweise 20 Zeilen nach unten gehen möchte, dann genügt '20j' oder '20↓'.
Weitere Erweiterungen