Website-Suche

Grundlagen des Vim-Editors unter Linux


Vim braucht keine Präsentationen: Es ist wahrscheinlich der beliebteste Texteditor von Systemadministratoren, auch aufgrund der Tatsache, dass es sich um einen Klon und eine Verbesserung des ursprünglichen Vi handelt, das standardmäßig in praktisch allen Linux- und Unix-basierten Betriebssystemen enthalten ist. Vim kann anfangs ziemlich einschüchternd sein und hat eine steile Lernkurve; Das Erlernen der Nutzung kann jedoch unsere Produktivität wirklich steigern. In diesem Artikel lernen wir die Grundlagen von Vim kennen.

In diesem Tutorial lernen Sie:

  • So installieren Sie Vim
  • Warum Vim ein "modaler" Texteditor ist und was sind die Vim-Modi?
  • So optimieren Sie das Erscheinungsbild von Vim mit der Konfigurationsdatei ~/.vimrc

Verwendete Softwareanforderungen und Konventionen

Installation

Sie können sicher sein, dass Vim, wenn es nicht standardmäßig installiert ist, in Ihren bevorzugten Distributions-Repositories verfügbar ist, daher müssen Sie zur Installation nur Ihren bevorzugten Paketmanager verwenden. Auf Debian- und Debian-basierten
-Distributionen können wir unter anderem apt-get verwenden:

sudo apt-get update && sudo apt-get install vim

Auf Fedora und allgemeiner auf allen Red Hat-Distributionen können wir den dnf-Paketmanager verwenden, um die Aufgabe auszuführen:

sudo dnf install vim

Laufen Sie unter Arch Linux? Da Vim in diesem Fall im Extra-Repository enthalten ist, müssen Sie bei der Installation nur den folgenden Befehl ausführen:

sudo pacman -S vim

Ein "modaler" Texteditor

Sie werden feststellen, dass sich vim ziemlich von den Texteditoren unterscheidet, an die Sie vielleicht gewöhnt sind. Dies liegt daran, dass es sich um einen modalen Texteditor handelt. Was bedeutet das? Vim verfügt über eine Reihe verschiedener Arbeitsmodi:

  • Normaler Modus
  • Einfüge-Modus
  • Visueller Modus
  • Kommandozustand

Sehen wir sie uns kurz an.

Normaler Modus

Der normale Modus ist die Standardeinstellung. Im normalen Modus können wir problemlos navigieren und Änderungen an einem Dokument vornehmen. Sehen wir uns einige Beispiele an. Angenommen, wir haben den folgenden Text im Editor geöffnet:

Wie Sie sehen können, befindet sich der Cursor am Anfang der ersten Zeile. Angenommen, wir möchten es am Anfang des zweiten Wortes verschieben ("Ringe " in diesem Fall). Alles, was wir tun müssen, ist, die Taste w (kurz für Wort) zu drücken; Dies bewegt sich vorwärts (nach rechts) zum Anfang eines Wortes:

Die "inverse" Bewegung wird durch Drücken der Taste b erreicht – diese Aktion bewegt den Cursor an den Anfang des vorherigen Wortes.

Was ist, wenn wir den Satz x-mal wiederholen möchten? Alles, was wir tun müssen, ist, die Anzahl der Bewegungen einzugeben, die wir ausführen möchten, bevor wir die Taste drücken, die der Bewegung entspricht, die wir ausführen möchten. Um den Cursor beispielsweise um zwei Wörter nach vorne zu bewegen, drücken wir 2w. Angenommen, der Cursor befindet sich gerade auf dem Wort "Ringe" in der ersten Zeile, dann erhalten wir folgendes Ergebnis:

Um den Cursor an den Anfang der aktuellen Zeile zu bewegen, können wir die Taste 0 drücken. Mit der $-Taste können wir den gegenteiligen Effekt erzielen, sodass der Cursor an das Ende der Zeile bewegt wird.

Um zur letzten Zeile eines geöffneten Dokuments zu gelangen, können wir G drücken, während wir gg drücken können, um zur ersten Zeile zu gelangen.

Die oben genannten sind nur einige Beispiele dafür, wie wir im normalen Modus einfach durch das Dokument navigieren können. In der folgenden Tabelle sehen wir eine kleine Anzahl von Tasten, die wir uns vielleicht merken möchten, und ihre Wirkung:

SCHLÜSSELEFFEKT
hBewegen Sie den Cursor nach links
jBewegen Sie den Cursor nach unten
kBewegen Sie den Cursor nach oben
lBewegen Sie den Cursor nach rechts
wVorwärts zum Anfang eines Wortes
WZum Anfang eines Wortes vorrücken (Interpunktion wird als Teil des Wortes betrachtet)
bRückwärts zum Anfang eines Wortes bewegen
BRückwärts an den Anfang eines Wortes gehen (Interpunktion wird als Teil des Wortes betrachtet)
eVorwärts gehen bis zum Ende eines Wortes
EVorwärts gehen bis zum Ende eines Wortes (Interpunktion wird als Teil des Wortes betrachtet)
An den Anfang der Zeile verschieben
$Bewegen Sie sich an das Ende der Zeile
GgZur ersten Zeile des Dokuments wechseln
GZur letzten Zeile des Dokuments wechseln
f{Zeichen}Zum ersten Vorkommen des angegebenen Zeichens wechseln
EinBewegen Sie sich über das Ende der Zeile hinaus und wechseln Sie in den "Einfügemodus".

Wenn wir im normalen Modus nicht nur auf Bewegungen beschränkt sind, gibt es auch Operatoren, die es uns ermöglichen, einige Aktionen auszuführen, wie zum Beispiel d (löschen) oder c (ändern). Diese Operatoren, kombiniert mit Bewegungen, ermöglichen es uns, Massenaktionen auszuführen.

Sehen wir uns ein Beispiel an: Wir wissen, dass die Taste w den Cursor vorwärts zum Anfang des nächsten Wortes bewegt; Wenn wir es mit dem D-Operator kombinieren, können wir ein ganzes Wort mit nur einem Befehl löschen. Angenommen, der Cursor befindet sich am Anfang der ersten Zeile unseres Textes, wenn wir dw drücken, erhalten wir folgendes Ergebnis:

Wie Sie sehen können, wurde das erste Wort der Zeile ("Drei ") entfernt. Auf die gleiche Weise könnten wir Text von der aktuellen Cursorposition bis zum Ende der Zeile löschen, indem wir d$ drücken, und so weiter.

Der Modus "Einfügen" (und "Ersetzen")

Der Einfügemodus ist praktisch der Standard-Arbeitsmodus aller gängigen Texteditoren. In diesem Modus können wir Text einfügen, wie wir es normalerweise mit anderen Editoren tun würden. Wie gelangen wir in diesen Modus? Wenn wir im normalen Modus arbeiten, können wir zum Beispiel eine der folgenden Tasten drücken:

SCHLÜSSELEFFEKT
IchText vor dem Cursor einfügen
IchEinfügen von Text am Anfang der Zeile
einEinfügen von Text nach dem Cursor
EinAnhängen von Text am Ende einer Zeile

Wie führe ich den inversen Prozess durch und wechsle vom Einfüge- in den Normalmodus? Alles, was wir tun müssen, ist, die Taste <Esc> oder <C-[> zu drücken.

Der Ersetzungsmodus ist dem Einfügemodus sehr ähnlich, der einzige Unterschied besteht darin, dass der von uns eingegebene Text den vorhandenen überschreibt, anstatt die Länge der Zeile zu verlängern. Wir können in den Ersetzungsmodus wechseln, indem wir das R verwenden, wenn wir sich im normalen Modus befinden
.

Der "Visuelle" Modus

Im "visuellen" Modus können wir einen Teil des Textes auswählen und einige Operationen daran durchführen. Der visuelle Modus kann auf drei verschiedenen Ebenen arbeiten:

  • Zeichen
  • Linie
  • Block

Um in den "zeichenweiten" visuellen Modus zu gelangen, können wir im normalen Modus die Taste v drücken; Um den "zeilenweisen" virtuellen Modus zu aktivieren, können wir stattdessen V (Großbuchstaben) verwenden. Um schließlich in den "blockweisen" visuellen Modus zu gelangen, können wir <C-v> drücken.

Vim visuelle Linie

Im Bild oben sehen Sie, wie der Editor aussieht, wenn der visuelle Modus "zeilenweise" aktiviert ist. Die gleichen Tasten, die wir oben besprochen haben, können verwendet werden, um zwischen den visuellen Modi zu wechseln. Wenn wir uns bereits in einem bestimmten visuellen Modus befinden und die Taste drücken, die ihn aktiviert, wechseln wir wieder in den normalen Modus:

Aktueller visueller ModusSchlüsselEffekt
charakterlichvWechseln Sie in den normalen Modus
charakterlichVWechseln Sie in den zeilenweisen visuellen Modus
charakterlich\Wechseln Sie in den blockweisen visuellen Modus
zeilenweisevWechseln Sie in den zeichenweisen visuellen Modus
zeilenweiseVWechseln Sie in den normalen Modus
zeilenweise\Wechseln Sie in den blockweisen visuellen Modus
blockweisevWechseln Sie in den zeichenweisen visuellen Modus
blockweiseVWechseln Sie in den zeilenweisen visuellen Modus
blockweise\Wechseln Sie in den normalen Modus

Die Bewegungstasten, die wir im normalen Modus gesehen haben, können auch im visuellen Modus verwendet werden. Wenn wir beispielsweise im zeichenweisen visuellen Modus arbeiten und von einem bestimmten Punkt bis zum ersten Vorkommen eines Buchstabens auswählen möchten, können wir
f{char} verwenden.

Wenn ein Teil des Textes ausgewählt ist, können wir ihn z. B. durch Drücken des Schlüsselworts d ausschneiden oder mit y kopieren.

Der "Kommandozeilen-Modus"

Um in den Kommandozeilenmodus zu gelangen, können wir im normalen Modus die Taste : oder / drücken, um eine Textsuche zu starten. Wenn wir uns in diesem Modus befinden, können wir Befehle eingeben, die ausgeführt werden sollen, nachdem wir <CR> (die Eingabetaste) gedrückt haben. Einer der einfachsten Befehle, die wir im Befehlszeilenmodus ausführen können, ist:

:help

Wenn der Befehl ausgeführt wird, wird ein neuer Puffer geöffnet, der die Haupthilfeseite von Vim anzeigt:

Die Vim-Hilfeseite In neueren Versionen von Vim können wir den Befehl terminal<span style="font-size: inherit;"> verwenden, um einen Terminal-Emulator direkt in den Texteditor zu öffnen:

:terminal

Das Ergebnis der Befehlsausführung ist:

Das Vim-Einbettungsterminal

Wie wir bereits sagten, können wir zum Ausführen einer Textsuche / drücken und den Text eingeben, den wir im Dokument finden möchten. Standardmäßig wird bei der Suche zwischen Groß- und Kleinschreibung unterschieden (dies kann über die Vim-Konfigurationsdatei mit der Direktive set ignorecase geändert werden). Nehmen wir als Beispiel an, wir möchten das Wort "Ring" im Text unseres Beispiels finden. Wir schreiben den folgenden Befehl, indem wir "Enter" drücken:

/Ring

Um durch die hervorgehobenen Ergebnisse zu blättern, können wir n drücken, und um die Hervorhebung der Wörter zu entfernen, können wir den Befehl noh ausführen:

:noh

Wir können den Befehlszeilenmodus auch verwenden, um Text zu ersetzen. Nehmen wir zum Beispiel an, wir möchten alle Vorkommen von "Ring" durch "Juwel" ersetzen. Was wir in diesem Fall tun würden, ist, den Ersatzbefehl s zu verwenden: s. Der
Befehl, den wir ausführen müssten, ist:

:%s/Ring/Jewel/g

Das %-Symbol, das wir vor dem Befehl verwendet haben, stellt sicher, dass die Operation im gesamten Dokument ausgeführt wird, während das nach der Ersetzung angehängte g verwendet wird, um die Ersetzung für alle in einer Zeile gefundenen Vorkommen durchzuführen (im Gegensatz nur für das erste).

Wenn wir den Befehl substitute verwenden, können wir auch andere "Modifikatoren" verwenden. Wenn wir zum Beispiel ein c nach dem Ersetzungsmuster anhängen, werden wir aufgefordert, jede Ersetzung zu bestätigen. Ich werde stattdessen die Groß-/Kleinschreibung nicht beachten.

Der Aktionsradius eines Befehls kann auf bestimmte Zeilen beschränkt werden. Um die Textersetzung nur in den Zeilen von der ersten bis zur sechsten (einschließlich) des Dokuments durchzuführen, würden wir schreiben:

:1,6s/Ring/Jewel/g

Derselbe Bereich könnte z.B. mit dem Befehl d (Löschen) verwendet werden, um die oben genannten Zeilen zu löschen:

:1,6d

Im Befehlszeilenmodus können wir auch externe Programme in der Shell aufrufen: Alles, was wir tun müssen, ist, solchen Befehlen das Symbol ! voranzustellen. Um beispielsweise einen Blick auf die (nicht versteckten) Dateien im aktuellen Arbeitsverzeichnis zu werfen, könnten wir den Befehl ls -l verwenden:

:!ls -l

Wir würden folgendes Ergebnis erhalten:

total 36
drwxr-xr-x. 2 egdoc egdoc 4096 Oct 31 12:45 Desktop
drwxr-xr-x. 2 egdoc egdoc 4096 Oct 31 12:45 Documents
drwxr-xr-x. 2 egdoc egdoc 4096 Nov  2 10:37 Downloads
-rw-r--r--. 1 egdoc egdoc  373 Nov  3 11:30 lotr.txt
drwxr-xr-x. 2 egdoc egdoc 4096 Oct 31 12:45 Music
drwxr-xr-x. 2 egdoc egdoc 4096 Nov  4 08:19 Pictures
drwxr-xr-x. 2 egdoc egdoc 4096 Oct 31 12:45 Public
drwxr-xr-x. 2 egdoc egdoc 4096 Oct 31 12:45 Templates
drwxr-xr-x. 2 egdoc egdoc 4096 Oct 31 12:45 Videos

Press ENTER or type command to continue

Wie in der Meldung vorgeschlagen, müssen wir die EINGABETASTE drücken, um zum Editor zurückzukehren. Dies sind nur einige grundlegende Beispiele für die Befehle, die wir in Vim verwenden können.

Anpassen von Vim

Das Erscheinungsbild von Vim kann über die Konfigurationsdatei angepasst werden: ~/.vimrc. Standardmäßig ist die Editor-Oberfläche sehr minimalistisch: Es werden nicht einmal Zeilennummern angezeigt! Lasst dies das Erste sein, was wir ändern werden.

Anzeige von Zeilennummern

Wir öffnen die Konfigurationsdatei und fügen die folgende Anweisung darin ein:

set number

Um die Auswirkungen der von uns vorgenommenen Änderungen zu sehen, sollten wir Vim normalerweise schließen und wieder öffnen. Wir können jedoch auch den Befehl :so ~/.vimrc ausgeben, um die Konfigurationsdatei zu beziehen und die Änderungen sofort wirksam zu machen. Aufgrund der von uns verwendeten Direktive
werden nun Zeilennummern angezeigt:

Hervorheben einer Spalte und Begrenzen der Zeilenlänge

Eine weitere häufige Funktion, die wir insbesondere beim Schreiben von Code verwenden möchten, ist das Hervorheben einer bestimmten Spalte. Wenn wir beispielsweise ein Python-Programm oder ein Shell-Skript schreiben, möchten wir in der Regel die Spalte 80 nicht überschreiten. Um die Spalte hervorzuheben, müssen wir die folgende Direktive in die Konfigurationsdatei einfügen:

set colorcolumn=80

In der Abbildung unten sehen Sie das Ergebnis der Änderung. Die von uns angegebene Spalte ist nun hervorgehoben:

Wenn wir tatsächlich eine Regel über die maximale Anzahl von Zeichen durchsetzen wollen, die in einer Zeile eingefügt werden dürfen, müssen wir stattdessen die textwidth-Direktive verwenden:

set textwidth=79

Aufgrund der obigen Änderung wird ein neues Wort, das nicht in die angegebene Anzahl von Zeichen passt, automatisch in eine neue Zeile eingefügt.

Verwenden Sie Leerzeichen anstelle von Tabulatoren

Eine weitere recht häufige Änderung, die wir vornehmen möchten, ist die Verwendung einer bestimmten Anzahl von Leerzeichen anstelle eines TAB-Zeichens, wenn die entsprechende Taste auf der Tastatur gedrückt wird. Um das gewünschte Setup zu erreichen, möchten wir die folgenden Direktiven verwenden:

set tabstop=2
set softtabstop=2
set expandtab
set shiftwidth=2

Im obigen Setup setzen wir die tabstop-Direktive, um die Größe eines "echten" TAB-Zeichens festzulegen. Die softtabstop-Direktive wird stattdessen verwendet, um die Anzahl der Leerzeichen anzugeben, die verwendet werden sollen, um eine Tabulatortaste zu ersetzen, wenn die expandtab-Direktive verwendet wird. In diesem Fall fügt Vim jedes Mal, wenn wir die Tab-Taste auf der Tastatur drücken, die Anzahl der Leerzeichen ein, die wir mit Softtabstop angegeben haben. Schließlich wird die Option shiftwidth verwendet, um die Einrückungsebene anzugeben, die für die automatische Einrückung und für Shift-Befehle verwendet wird.

Dateitypspezifische Einstellungen

Was ist, wenn wir einige Einstellungen festlegen möchten, die nur auf bestimmte Arten von Dateien angewendet werden sollen? In diesem Fall müssen wir das integrierte Dateityp-Plugin aktivieren. Dazu hängen wir die folgende Zeile an die Konfigurationsdatei an:

filetype plugin on

An dieser Stelle müssen wir im Verzeichnis ~/.vim/after/ftplugin (wir müssen es erstellen, wenn es noch nicht existiert) eine Datei erstellen, die nach dem Dateityp benannt ist, für den wir Einstellungen festlegen möchten, und die Erweiterung ".vim" verwenden.

Um beispielsweise Einstellungen für Python-Dateien festzulegen, erstellen wir die Datei ~/.vim/after/ftplugin/python.vim und fügen unsere Anweisungen darin ein. Das einzige, was empfohlen wird, ist, die setlocal-Anweisung in der Datei anstelle von set zu verwenden, um die Änderungen nur für den geöffneten Puffer und nicht global gültig zu machen. Nehmen wir zum Beispiel an, wir möchten ein TAB-Zeichen nur in Python-Skripten durch 4 Leerzeichen ersetzen. In der Datei ~/.vim/after/ftplugin/python.vim würden wir schreiben:

setlocal softtabstop=4
setlocal shiftwidth=4

Was wir hier verwendet haben, ist nur eine sehr, sehr kleine Teilmenge der Optionen, die wir in der Vim-Konfigurationsdatei verwenden können, um das Erscheinungsbild des Editors zu optimieren. Was wir hier zeigen wollen, ist der grundlegende Mechanismus.

Schlüsse

In diesem Artikel haben wir unseren ersten Ansatz mit dem wohl bekanntesten und beliebtesten Texteditor auf Linux- und Unix-basierten Plattformen begonnen: Vim. Wir haben gesehen, wie Vim als Klon des ursprünglichen Vi-Editors erstellt wurde, der standardmäßig auf fast allen Distributionen installiert ist, wir haben gesehen, warum er als modaler Texteditor bezeichnet wird und welche Modi wir verwenden können.

Schließlich haben wir gesehen, wie man das Erscheinungsbild des Editors optimieren kann, indem man Direktiven in die Konfigurationsdatei ~/.vimrc schreibt. Wir kratzen kaum an der Oberfläche dessen, was wir mit Vim erreichen können, da dies als erster Schritt in die Vim-Welt gedacht war. Wir werden in zukünftigen Tutorials ausführlicher auf bestimmte Funktionen eingehen. Bleiben Sie dran!

Verwandte Artikel: