Looking for vim Answers? Try Ask4KnowledgeBase
Looking for vim Keywords? Try Ask4Keywords

vimErste Schritte mit vim


Bemerkungen

Vim (oder "Vi IMproved") ist ein konsolenbasierter Multi-Mode-Texteditor ( modal ). Es ist weit verbreitet und standardmäßig auf allen Unix-, Linux- und Apple OS X-Systemen verfügbar. Vim hat eine große aktive Community und eine breite Benutzerbasis. Der Editor unterstützt alle gängigen Programmiersprachen. Viele Plugins sind verfügbar, um die Funktionen zu erweitern.

Entwickler schätzen den Editor aufgrund seiner Geschwindigkeit, seiner vielen Konfigurationsoptionen und der ausdrucksstarken Bearbeitung. Im Befehlsmodus wird der Editor durch Tastaturbefehle gesteuert, sodass der Benutzer nicht durch eine GUI oder einen Mauszeiger abgelenkt wird.

Vim basiert auf dem früheren Unix-Editor "vi", der in den siebziger Jahren erstellt wurde, und wird seit 1991 kontinuierlich weiterentwickelt. Mit Makros und Plugins bietet der Editor die meisten Funktionen einer modernen IDE. Mit seiner Skriptsprache (Vimscript) und regulären Ausdrücken ist es auch in der Lage, große Textmengen zu verarbeiten.

Hauptthemen:

Vim Standard-Startmeldung

Versionen

Ausführung Veröffentlichungsdatum
8,0 2016-09-12
7.4 2013-08-10
7.3 2010-08-15
7.2 2008-08-09
7.1 2007-05-12
7,0 2006-05-07
6,0 2001-09-26
5,0 1998-02-19
4,0 1996-05-29
3,0 1994-08-12
2,0 1993-12-14
1.14 1991-11-02

Grundlagen

Führen Sie interaktive vim-Tutorials so oft aus, wie Sie es benötigen, um sich mit den Grundlagen vertraut zu machen.

Vim bietet verschiedene Modi, z. B. Normalmodus , Einfügemodus und Befehlszeilenmodus .

Im Normalmodus können Sie Text bearbeiten und navigieren. In diesem Modus entsprechen h , j , k und l den Cursortasten , , und . Den meisten Befehlen im Normalmodus kann ein "count" vorangestellt werden, z. B. 3j fährt 3 Zeilen nach unten.

Der Einfügemodus dient zum direkten Einfügen des Textes. In diesem Modus ähnelt vim anderen einfacheren Texteditoren. Um den Einfügemodus zu aktivieren, drücken Sie i im normalen Modus. Zum Verlassen drücken Sie <ESC> (Escape-Taste).

Im Befehlszeilenmodus können komplexere Befehle ausgeführt werden, beispielsweise das Speichern der Datei und das Beenden von vim. Drücken Sie : um den Befehlszeilenmodus zu starten. Um diesen Modus zu verlassen, können Sie auch <ESC> drücken. Um die Änderungen an der Datei zu speichern, verwenden Sie :w (oder :write ). Um vim zu verlassen, ohne die Änderungen zu speichern, verwenden Sie :q! (oder :quit! ).

Dies sind einige der nützlicheren Befehle in vim:

Befehl Beschreibung
i (Einfügen) wechselt in den Einfügemodus vor der aktuellen Cursorposition
I wechselt in den Einfügemodus vor dem ersten druckbaren Zeichen der aktuellen Zeile
a (Anfügen) wechselt nach der aktuellen Cursorposition in den Einfügemodus
A wechselt in den Einfügemodus nach dem letzten druckbaren Zeichen der aktuellen Zeile
x Zeichen an der aktuellen Cursorposition löschen
X Zeichen links an der aktuellen Cursorposition löschen
w zum nächsten Wort wechseln
b zum vorherigen Wort wechseln
0 zum Zeilenanfang gehen
$ zum Ende der Zeile gehen
r Ersetzen - Ruft den Ersetzungsmodus für ein Zeichen auf. Das nächste Zeichen, das Sie eingeben, wird das Zeichen unter dem Cursor ersetzen.
R wechselt unbegrenzt in den Ersetzungsmodus. Jedes Zeichen, das Sie eingeben, wird das Zeichen unter dem Cursor ersetzen und den Cursor um eins vorrücken.
s Ersatz - löscht das Zeichen an der aktuellen Cursorposition und wechselt dann in den Einfügemodus
S Löschen Sie die aktuelle Zeile, in der sich der Cursor gerade befindet, und wechseln Sie in den Einfügemodus
<Esc> , <Cc> Beenden Sie den Einfügemodus und kehren Sie zum Normalmodus zurück
u rückgängig machen
<Cr> Wiederholen
dd , dw , dl , d$ Schneiden Sie die aktuelle Zeile vom Cursor zum nächsten Wort oder das Zeichen, die aktuelle Position bis zum Ende der aktuellen Zeile. Hinweis: D ist das Äquivalent von d$
cc , cw , cl wechselt die aktuelle Zeile vom Cursor zum nächsten Wort bzw. zum Zeichen
yy , yw , yl , y$ yank ("copy") die aktuelle Zeile, vom Cursor zum nächsten Wort oder das Zeichen, die aktuelle Position bis zum Ende der aktuellen Zeile
p , P Put ("Einfügen") nach bzw. vor der aktuellen Position
o , O um eine neue leere Zeile nach oder vor der aktuellen zu erstellen und den Einfügemodus zu aktivieren
:w schreibe den aktuellen Puffer auf die Festplatte
:q! , ZQ Beenden ohne zu schreiben
:x :wq , ZZ schreiben und beenden
:help Öffnet ein Fenster mit Hilfedatei
:help {subject} Hilfe zu einem bestimmten Thema anzeigen
qz Beginnen Sie mit den Aufzeichnungsaktionen, um z zu registrieren, q , um die Aufnahme zu beenden, und @z , um die Aktionen @z . z kann ein beliebiger Buchstabe sein: q wird häufig aus Gründen der Übersichtlichkeit verwendet. Lesen Sie mehr: Makros

Vim verlassen

Um Vim zu beenden, zuerst sicherstellen , dass Sie im Normal - Modus sind durch Drücken der Taste Esc.

  • :q Enter (verhindert das Beenden, wenn Sie nicht gespeicherte Änderungen haben - kurz für: quit)

Änderungen verwerfen und Vim beenden:

  • :q! Geben Sie ein , um die Änderungen zu :quit! und zu verwerfen (kurz für :quit! Nicht zu verwechseln mit :!q ),
  • ZQ ist eine Abkürzung, die dasselbe tut wie :q! .
  • :cq Geben Sie quit und return error ein (verwerfen Sie alle Änderungen, damit der Compiler diese Datei nicht neu kompiliert).

Änderungen speichern und Vim beenden:

  • :wq Enter (Abkürzung für :write und :quit ),
  • :x Eingabe (wie bei :wq , :wq aber nicht, wenn die Datei nicht geändert wurde),
  • ZZ ist eine Verknüpfung, die das Gleiche tut wie :x (Arbeitsbereich speichern und Editor beenden),
  • :[range]wq! Eingabe (schreibe die Zeilen in [Bereich])

Um mehrere Puffer gleichzeitig zu schließen (auch in mehreren Fenstern und / oder Registerkarten), hängen Sie den Buchstaben a an einen der Befehle oben (die mit : ). Zum Beispiel zum Schreiben und Beenden aller Fenster, die Sie verwenden können:

  • :wqa Geben Sie oder ein
  • :xa Enter - Schreiben Sie alle geänderten Puffer und beenden Sie Vim. Wenn Puffer ohne Dateinamen vorhanden sind, die nur lesbar sind oder aus einem anderen Grund nicht geschrieben werden können, wird Vim nicht beendet
  • :xa! Enter - Schreiben Sie alle geänderten Puffer, auch die schreibgeschützten, und beenden Sie Vim. Wenn es Puffer gibt, die keinen Dateinamen haben oder aus einem anderen Grund nicht geschrieben werden können, wird Vim nicht beendet
  • :qa Enter - versuchen Sie den Vorgang zu beenden, aber stoppen Sie nicht gespeicherte Dateien.
  • :qa! Enter - ohne Speichern abbrechen (Änderungen in nicht gespeicherten Dateien verwerfen)

Wenn Sie Vim geöffnet haben, ohne eine Datei anzugeben, und diese Datei vor dem Beenden speichern möchten, erhalten Sie die Nachricht E32: No file name . Sie können Ihre Datei speichern und beenden mit:

  • :wq filename Enter oder;
  • :x filename eingeben

Erläuterung:

Die: Tastendruck öffnet sich tatsächlich Befehlsmodus. Der Befehl q ist eine Abkürzung für quit , w , von write und x , exit (Sie können auch Folgendes :quit :write und :exit wenn Sie möchten). Verknüpfungen beginnend nicht : wie ZZ und ZQ in den Normalmodus Tastenzuordnungen beziehen. Sie können sich als Abkürzungen vorstellen.

Die ! Der Tastenanschlag wird manchmal am Ende eines Befehls verwendet, um die Ausführung zu erzwingen, wodurch Änderungen verworfen werden können :q! . Platzieren der ! am Anfang des Befehls hat eine andere Bedeutung. Zum Beispiel kann man falsch eingeben:! :!q statt :q! und vim würde mit einem Fehler von 127 enden.

Eine einfache Möglichkeit, sich daran zu erinnern, ist, daran zu denken ! als eine Möglichkeit, darauf zu bestehen, etwas auszuführen. Genau wie beim Schreiben: "Ich möchte aufhören!"

Installation

Das Vim auf Ihrem Computer ist - sofern vorhanden - sehr wahrscheinlich ein "kleiner" Build, dem nützliche Funktionen wie Unterstützung der Zwischenablage, Syntaxhervorhebung oder sogar die Verwendung von Plugins fehlen.

Dies ist kein Problem, wenn Sie nur eine schnelle Methode zum Bearbeiten von Konfigurationsdateien benötigen. Wenn Sie jedoch Vim zu Ihrem Haupteditor machen möchten, werden Sie bald eine Reihe von Wänden treffen.

Es wird daher generell empfohlen, einen vollständigen Build zu installieren.

Installation unter Linux / BSD

Auf diesen Systemen besteht der Trick darin, die GUI-Version zu installieren, die sowohl einen gvim Befehl zum Starten der GUI als auch einen vim Befehl zum Starten der TUI enthält.

Arch- und Arch-basierte Distributionen

$ sudo pacman -R vim
$ sudo pacman -S gvim
 

Debian- und Debian-basierte Distributionen

$ sudo apt-get update
$ sudo apt-get install vim-gtk
 

Gentoo- und Gentoo-basierte Distributionen

$ sudo emerge --sync
$ sudo emerge app-editors/gvim
 

RedHat- und RedHat-basierte Distributionen

$ sudo yum check-update
$ sudo yum install vim-X11
 

Fedora

$ sudo dnf check-update
$ sudo dnf install vim-X11
 

Slackware- und Slackware-basierte Distributionen

$ sudo slackpkg update
$ sudo slackpkg install-new vim-gvim
 

OpenBSD- und OpenBSD-basierte Distributionen

$ sudo pkg_add vim-x11
 

FreeBSD- und FreeBSD-basierte Distributionen

$ sudo pkg install editors/vim
 

Installation unter Mac OS X

Die Strategie ist ähnlich wie bei Mac OS X: Wir installieren die GUI-Version, um sowohl die GUI als auch die TUI zu erhalten. Am Ende sollten wir in der Lage sein:

  • Doppelklicken Sie im Finder auf das MacVim-Symbol.
  • Klicken Sie im Dock auf das MacVim-Symbol.
  • geben Sie $ mvim in der Shell ein, um die MacVim- $ mvim zu öffnen.
  • $ mvim -v in der Shell $ mvim -v ein, um die MacVim-TUI zu öffnen.

Regelmäßige Installation

Laden Sie einen offiziellen Snapshot herunter und installieren Sie ihn wie mit jeder anderen Mac OS X-Anwendung.

Platzieren Sie das mit MacVim mitgelieferte mvim Skript irgendwo in Ihrem $PATH .

Paket-Manager

MacPorts:
$ sudo port selfupdate
$ sudo port install macvim
 
Homebrew:
$ brew install macvim
 

So machen Sie MacVim zur Standardkonsole Vim:

$ brew install macvim --with-override-system-vim
 

Installation unter Windows

Auf Windows-Systemen ist standardmäßig kein Vim vorhanden. Sie können Vim von der Tuxproject-Site herunterladen und installieren, um aktuellere und vollständige Builds zu erhalten, oder Sie können Vim von der offiziellen Vim-Site herunterladen und installieren.

Schokoladig

> choco install vim
 

Vim von der Quelle aus bauen

Wenn die oben genannten Methoden nicht Ihre Bedürfnisse ist es noch möglich , Vim selbst zu bauen, nur die Optionen , die Sie benötigen.

Dieses Thema wird in einem eigenen Abschnitt (derzeit im Entwurf) erörtert.

Interaktive Vim-Tutorials (z. B. Vimtutor)

vimtutor ist ein interaktives Tutorial, das die grundlegendsten Aspekte der Textbearbeitung behandelt.

Auf einem UNIX-ähnlichen System können Sie das Lernprogramm mit folgendem Befehl starten:

$ vimtutor
 

Unter Windows befindet sich „Vim Tutor“ im Verzeichnis „Vim 7.x“ unter „All Programs“ im Windows-Menü.

Weitere Informationen finden Sie unter :help vimtutor .

Andere interaktive Tutorials umfassen diese browserbasierten:

  • Vim Adventures - Eine interaktive Spielversion von vimtutor, die im Internet verfügbar ist. Nur die ersten Stufen sind frei.
  • Open Vim - Ein interaktives Terminal, das Ihnen die grundlegenden Befehle mit Feedback vermittelt.
  • Vim Genius - Ein weiteres interaktives Terminal, das auch fortgeschrittene und fortgeschrittene Lektionen einschließlich Makros und Arglist beinhaltet.

Speichern einer schreibgeschützten Datei, die in Vim bearbeitet wurde

Manchmal öffnen wir möglicherweise eine Datei, für die wir keine Berechtigung zum Schreiben in Vim haben, ohne sudo .

Verwenden Sie diesen Befehl, um eine schreibgeschützte Datei zu speichern, die in Vim bearbeitet wurde.

:w !sudo tee > /dev/null %
 

Welches Sie zuordnen könnten :w!! in deiner .vimrc :

cmap w!! w !sudo tee > /dev/null %
 

Es wird eine Aufforderung angezeigt, wie im Bild gezeigt.

Drücken Sie ENTER oder geben Sie den Befehl ein, um fortzufahren. [O] K, (L) oder Datei laden: .

Drücken Sie O und die Datei wird gespeichert. In vi / vim bleibt es für weitere Bearbeitungen oder zum Lesen geöffnet. Sie können das Programm normalerweise beenden, indem Sie Folgendes eingeben :q! da die Datei noch schreibgeschützt ist.

Befehlserklärung

:w ............................ isn't modifying your file in this case, 
   ............................ but sends the current buffer contents to 
   ............................ a substituted shell command
   !sudo ...................... call the shell 'sudo' command
         tee .................. the output of the vi/vim write command is redirected 
                                using the 'tee' command
             > /dev/null ...... throws away the standard output, since we don't need 
                                to pass it to other commands
                         % .... expands to the path of the current file
 

Quellen:

Vim aussetzen

Wenn Sie vim von der Befehlszeile aus verwenden, können Sie vim aussetzen und zu Ihrer Eingabeaufforderung zurückkehren, ohne vim tatsächlich zu beenden. Daher können Sie Ihre vim Sitzung später von derselben Eingabeaufforderung abrufen.

Im Normalmodus (wenn nicht, drücken Sie esc , um dorthin zu gelangen), geben Sie einen der folgenden Befehle aus:

:st eingeben

:sus eintreten

:stop enter

:suspend Enter :suspend

Alternativ auf einigen Systemen, wenn im normalen oder visuellen Modus, Ausgabe Strg + Z die gleiche Wirkung hat.

Hinweis: Wenn autowrite eingestellt ist, werden Puffer mit Änderungen und Dateinamen ausgeschrieben. Fügen Sie ein ! vor eingeben , um zu vermeiden, z. :st! eintreten

Wenn Sie später zu Ihrer vim Sitzung zurückkehren möchten, wenn Sie keine anderen Jobs angehalten haben, wird durch das Ausgeben der folgenden Informationen vim als Vordergrundjob wiederhergestellt.

fg eingeben

Andernfalls müssen Sie die Job-ID Ihrer vim Sessions finden, indem Sie jobs eingeben und dann die entsprechenden Jobs in den Vordergrund legen. fg %[job ID] eingeben, z. fg %1 eingeben .

Was tun im Falle eines Absturzes?

Vim speichert alle nicht gespeicherten Änderungen in einer Auslagerungsdatei , einer zusätzlichen Datei, die gelöscht wird, sobald die Änderungen durch Speichern übernommen werden. Der Name der Auslagerungsdatei ist normalerweise der Name der zu bearbeitenden Datei, vorangestellt von einem . und mit einem .swp Suffix (Sie können es mit :sw ).

Falls Ihr vim-Prozess beendet wird, bevor Sie die Änderungen speichern konnten, können Sie Ihre Arbeit wiederherstellen, indem Sie die in der Auslagerungsdatei enthaltenen Änderungen auf Ihre aktuelle Datei anwenden, indem Sie die Befehlszeilenoption -r . Wenn beispielsweise myFile die Datei ist, die Sie bearbeitet haben, verwenden Sie myFile :

$ vi -r myFile
 

um die nicht festgeschriebenen Änderungen wiederherzustellen.

Wenn eine Auslagerungsdatei vorhanden ist, sollten Sie von vim trotzdem zur Eingabe von Wiederherstellungsoptionen aufgefordert werden

$ vi myFile
E325: ATTENTION
Found a swap file by the name ".myFile.swp"
...
Swap file ".myFile.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:
 

Wenn Sie (R) ecover wählen, werden die Änderungen aus der swp Datei übernommen, die Auslagerungsdatei wird jedoch nicht gelöscht. Vergessen Sie nicht, die Auslagerungsdatei anschließend zu löschen, wenn Sie mit der Wiederherstellung zufrieden sind.