LPIC101/103.8 Grundlegendes Editieren von Dateien mit dem vi Editor: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 16: Zeile 16:
In der folgenden Liste sind einige Möglichkeiten aufgeführt:
In der folgenden Liste sind einige Möglichkeiten aufgeführt:


vi
vi
    Öffnet ein neues Dokument
Öffnet ein neues Dokument
vi datei
vi datei
    Startet den Vi mit der angegebenen Datei. Falls diese nicht existiert, wird sie erstellt.
Startet den Vi mit der angegebenen Datei. Falls diese nicht existiert, wird sie erstellt.
vi +datei
vi +datei
    Verwendet eine Kopie der Datei und öffnet diese erst beim Beenden oder Speichern.
Verwendet eine Kopie der Datei und öffnet diese erst beim Beenden oder Speichern.
vi -r datei
vi -r datei
    Nach einem Systemabsturz wird die Abarbeitung an der letzten Stelle fortgesetzt. Der Vi erstellt alle 30 Sekunden eine Sicherung der Daten.
Nach einem Systemabsturz wird die Abarbeitung an der letzten Stelle fortgesetzt. Der Vi erstellt alle 30 Sekunden eine Sicherung der Daten.
vi -R datei
vi -R datei
    Öffnet die angegebene Datei im read-only-Modus (Nur-Lese-Modus).
Öffnet die angegebene Datei im read-only-Modus (Nur-Lese-Modus).
vi -
vi -
    Liest den Inhalt der Standardausgabe ein. Beispiel: ls | vi -
Liest den Inhalt der Standardausgabe ein. Beispiel: ls | vi -


Öffnen von Dateien aus Vim heraus
Öffnen von Dateien aus Vim heraus
Zeile 33: Zeile 33:
Dateien können auch aus dem Vim geöffnet werden. Folgende Kommandos stehen im Kommandomodus zur Verfügung:
Dateien können auch aus dem Vim geöffnet werden. Folgende Kommandos stehen im Kommandomodus zur Verfügung:


:e datei
:e datei
    Öffnet die angegebene Datei. Bei der Eingabe des Dateinamens kann der Expansionsmechanismus der Bash verwendet werden. Die aktuell geladene Datei darf seit dem letzten Speichern nicht modifiziert worden sein.
Öffnet die angegebene Datei. Bei der Eingabe des Dateinamens kann der Expansionsmechanismus der Bash verwendet werden.<br> Die aktuell geladene Datei darf seit dem letzten Speichern nicht modifiziert worden sein.
:e! datei
:e! datei
    Wie ":e datei". Evtl. vorgenommene Änderungen der aktuellen Datei werden verworfen.
Wie ":e datei". Evtl. vorgenommene Änderungen der aktuellen Datei werden verworfen.
:r datei
:r datei
    Fügt die angegebene Datei bei der aktuellen Cursorposition ein. Auch hier kann der Expansionsmechanismus der Bash genutzt werden.
Fügt die angegebene Datei bei der aktuellen Cursorposition ein. Auch hier kann der Expansionsmechanismus der Bash genutzt werden.


Text editieren
Text editieren
Zeile 47: Zeile 47:
Folgende Tasten stehen zur Verfügung, um in den Eingabemodus zu wechseln:
Folgende Tasten stehen zur Verfügung, um in den Eingabemodus zu wechseln:


i
i: Einfügen links vom Cursor.
    Einfügen links vom Cursor
a: Einfügen rechts vom Cursor.
a
I: Einfügen am Zeilenanfang.
    Einfügen rechts vom Cursor
A: Einfügen am Zeilenende.
I
o: Fügt eine neue Zeile hinter der aktuellen Zeile ein.
    Einfügen am Zeilenanfang
O: Fügt eine neue Zeile vor der aktuellen Zeile ein.
A
R: Überschreibt ab der Cursorposition.
    Einfügen am Zeilenende
o
    Fügt eine neue Zeile hinter der aktuellen Zeile ein
O
    Fügt eine neue Zeile vor der aktuellen Zeile ein
R
    Überschreibt ab der Cursorposition


Die folgenden Kommandos sind im Kommandomodus (zu Erreichen mit der Escape-Taste) einzugeben:
Die folgenden Kommandos sind im Kommandomodus (zu Erreichen mit der Escape-Taste) einzugeben:


yy
yyKopiert die aktuelle Zeile in einen Puffer.
    Kopiert die aktuelle Zeile in einen Puffer
nyKopiert n+1 Zeilen in einen Puffer.
ny
ywKopiert ein Wort rechts vom Cursor in einen Puffer.
    Kopiert n+1 Zeilen in einen Puffer
nyw: Kopiert n Worte rechts vom Cursor in einen Puffer.
yw
ybKopiert ein Wort links vom Cursor in einen Puffer.
    Kopiert ein Wort rechts vom Cursor in einen Puffer
nyb: Kopiert n Worte links vom Cursor in einen Puffer.
nyw
    Kopiert n Worte rechts vom Cursor in einen Puffer
yb
    Kopiert ein Wort links vom Cursor in einen Puffer
nyb
    Kopiert n Worte links vom Cursor in einen Puffer


Du kannst aber auch anders vorgehen, um einen bestimmten Bereich des Textes in einen Puffer zu kopieren:
Du kannst aber auch anders vorgehen, um einen bestimmten Bereich des Textes in einen Puffer zu kopieren:


    Wechseln in den Kommandomodus (Escape-Taste)
* Wechseln in den Kommandomodus (Escape-Taste)
    Bewegen des Cursors an Beginn/Ende des zu markierenden Textes
* Bewegen des Cursors an Beginn/Ende des zu markierenden Textes
    Druck auf die Taste v schaltet in den Visual-Modus um
* Druck auf die Taste v schaltet in den Visual-Modus um
    Bewegen des Cursors an das Ende/Beginn des zu markierenden Textes
* Bewegen des Cursors an das Ende/Beginn des zu markierenden Textes
 
* Druck auf die Taste y kopiert den markierten Text in einen Puffer und schaltet wieder in den Kommandomodus um Text einfügen
    Druck auf die Taste y kopiert den markierten Text in einen Puffer und schaltet wieder in den Kommandomodus um
    Text einfügen


     Um Text aus einem Puffer einzufügen, stehen folgende Befehle im Kommandomodus zur Verfügung:
     Um Text aus einem Puffer einzufügen, stehen folgende Befehle im Kommandomodus zur Verfügung:


     p
p     Fügt Pufferinhalt nach aktuellem Wort oder nach aktueller Zeile ein (hängt vom Pufferinhalt ab)
        Fügt Pufferinhalt nach aktuellem Wort oder nach aktueller Zeile ein (hängt vom Pufferinhalt ab)
P     Fügt den Pufferinhalt vor dem aktuellen Wort oder vor der aktuellen Zeile ein (hängt vom Pufferinhalt ab)
     P
        Fügt den Pufferinhalt vor dem aktuellen Wort oder vor der aktuellen Zeile ein (hängt vom Pufferinhalt ab)
 
    Text löschen


    Befindet sich der Vim im Eingabemodus, kann die Backspace-Taste (Zurück-Taste) zum Löschen von Text benutzt werden.
**Text löschen


    Im Kommandomodus stehen aber auch folgende Tasten zur Verfügung:
Befindet sich der Vim im Eingabemodus, kann die Backspace-Taste (Zurück-Taste) zum Löschen von Text benutzt werden.


    x
**Im Kommandomodus stehen aber auch folgende Tasten zur Verfügung:
        Löscht das Zeichen an der Cursorposition
xLöscht das Zeichen an der Cursorposition
    nx
nxLöscht n Zeichen ab der Cursorposition
        Löscht n Zeichen ab der Cursorposition
XLöscht ein Zeichen vor dem Cursor
    X
nXLöscht n Zeichen vor dem Cursor
        Löscht ein Zeichen vor dem Cursor
ddLöscht die aktuelle Zeile
    nX
ndd: Löscht n Zeilen ab der Cursorposition
        Löscht n Zeichen vor dem Cursor
nJEntfernt die Zeilenende-Zeichen der nächsten n Zeilen
    dd
dLLöscht alles bis zum unteren Bildschirmrand
        Löscht die aktuelle Zeile
dwLöscht das aktuelle Wort
    ndd
d)Löscht den Rest des aktuellen Absatzes
        Löscht n Zeilen ab der Cursorposition
DLöscht alles bis aktuellem Zeilenende
    nJ
nDLöscht bis aktuellem Zeilenende und die nächsten n-1 Zeilen
        Entfernt die Zeilenende-Zeichen der nächsten n Zeilen
    dL
        Löscht alles bis zum unteren Bildschirmrand
    dw
        Löscht das aktuelle Wort
    d)
        Löscht den Rest des aktuellen Absatzes
    D
        Löscht alles bis aktuellem Zeilenende
    nD
        Löscht bis aktuellem Zeilenende und die nächsten n-1 Zeilen


    Auch zum Löschen von Text kann der Visual-Modus verwendet werden:
Auch zum Löschen von Text kann der Visual-Modus verwendet werden:
        Wechseln in den Kommandomodus (Escape-Taste)
Wechseln in den Kommandomodus (Escape-Taste)
        Mit v in den Visual-Modus umschalten
Mit v in den Visual-Modus umschalten
        Text markieren
Text markieren
        Mit Druck auf die Taste d wird der markierte Text gelöscht
Mit Druck auf die Taste d wird der markierte Text gelöscht
        Text suchen und ersetzen
Text suchen und ersetzen


        Selbstverständlich stehen auch Kommandos zum Suchen und Ersetzen von Text zur Verfügung:
Selbstverständlich stehen auch Kommandos zum Suchen und Ersetzen von Text zur Verfügung:


        /muster
/muster: Sucht im Text vorwärts nach eingegebenem Suchmuster
            Sucht im Text vorwärts nach eingegebenem Suchmuster
?muster: Sucht im Text rückwärts nach eingegebenem Suchmuster
        ?muster
n: Wiederholt das letzte Suchkommando
            Sucht im Text rückwärts nach eingegebenem Suchmuster
:s/alt/neu: Sucht und ersetzt alt durch neu (nur in der aktuellen Zeile)
        n
:s/alt/neu/g: Sucht und ersetzt alt durch neu in der ganzen Zeile
            Wiederholt das letzte Suchkommando
:1,$s/alt/neu: Ersetzt im ganzen Dokument alt durch neu
        :s/alt/neu
            Sucht und ersetzt alt durch neu (nur in der aktuellen Zeile)
        :s/alt/neu/g
            Sucht und ersetzt alt durch neu in der ganzen Zeile
        :1,$s/alt/neu
            Ersetzt im ganzen Dokument alt durch neu


        Optionen im Kommandomodus
Optionen im Kommandomodus


        Die hier aufgeführten Optionen stehen zum Beispiel im Kommandomodus zur verfügung:
Die hier aufgeführten Optionen stehen zum Beispiel im Kommandomodus zur verfügung:


        se option
se option
            Anzeige des Wertes einer Option
Anzeige des Wertes einer Option
        se all
se all
            Anzeige der Werte aller Optionen
Anzeige der Werte aller Optionen
        :syntax on/off
:syntax on/off
             Farbliche (unter X) bzw. durch verschiedene Schriftarten hervorgehobene Syntax verschiedener Quelldateien (C, C++, Shellskripte, HTML...)
             Farbliche (unter X) bzw. durch verschiedene Schriftarten hervorgehobene Syntax verschiedener Quelldateien (C, C++, Shellskripte, HTML...)
        :set bf
:set bf
            Entfernt alle Steuerzeichen aus dem Text
Entfernt alle Steuerzeichen aus dem Text
        :set ic
:set ic
            Die Groß-/Kleinschreibung von Kommandos wird nicht unterschieden
Die Groß-/Kleinschreibung von Kommandos wird nicht unterschieden
        :set nu
:set nu
            Zeilennummerierung wird aktiviert
Zeilennummerierung wird aktiviert
        :set scroll=xx
:set scroll=xx
            Bestimmt den Scrollbereich (xx = Zeilen)
Bestimmt den Scrollbereich (xx = Zeilen)
        :set sh=pfad_zu_shell
:set sh=pfad_zu_shell
             Bestimmt die Shell, deren Kommandos innerhalb des Vim aufgerufen werden können
             Bestimmt die Shell, deren Kommandos innerhalb des Vim aufgerufen werden können
         :set ts=x
         :set ts=x

Version vom 28. November 2019, 16:12 Uhr

Texteditor Vim

In diesem Artikel stelle ich die grundlegenden Funktionen des sehr mächtigen und weit verbreiteten Texteditors Vim vor. Der Editor Vim ist eine verbesserte und frei verfügbare Version des unter Unix entwickelten Programms Vi. Gerade für Einsteiger ist dieser Editor nicht intuitiv bedienbar. Da er aber auf sehr vielen Linux-Systemen verfügbar, komplett über die Tastatur zu steuern und unter Administratoren und Programmierern weit verbreitet ist, stelle ich ihn hier grundlegend vor. Die Projekt-Website ist unter www.vim.org zu finden.

Bedenke bitte, dass es sich nicht um ein Programm zur Textverarbeitung handelt. Eine Textverarbeitung bietet Funktionen zur Formatierung der Schrift und des Seitenlayouts. Texteditoren werden zur Bearbeitung von Konfigurationsdateien oder für die Programmierung verwendet. Installation

Die Installation des Editors gestaltet sich unter Debian wie gewohnt recht einfach:

apt install vim Den Editor starten

Der Editor kann auf unterschiedliche Weise gestartet werden. Ihm können beliebig viele Dateien übergeben werden. Nach dem starten befindet sich der Vim im Kommandomodus, der gesondert beschrieben wird. Man kann also nicht sofort losschreiben.

In der folgenden Liste sind einige Möglichkeiten aufgeführt:

vi

Öffnet ein neues Dokument

vi datei

Startet den Vi mit der angegebenen Datei. Falls diese nicht existiert, wird sie erstellt.

vi +datei

Verwendet eine Kopie der Datei und öffnet diese erst beim Beenden oder Speichern.

vi -r datei

Nach einem Systemabsturz wird die Abarbeitung an der letzten Stelle fortgesetzt. Der Vi erstellt alle 30 Sekunden eine Sicherung der Daten.

vi -R datei

Öffnet die angegebene Datei im read-only-Modus (Nur-Lese-Modus).

vi -

Liest den Inhalt der Standardausgabe ein. Beispiel: ls | vi -

Öffnen von Dateien aus Vim heraus

Dateien können auch aus dem Vim geöffnet werden. Folgende Kommandos stehen im Kommandomodus zur Verfügung:

:e datei

Öffnet die angegebene Datei. Bei der Eingabe des Dateinamens kann der Expansionsmechanismus der Bash verwendet werden.
Die aktuell geladene Datei darf seit dem letzten Speichern nicht modifiziert worden sein.

:e! datei

Wie ":e datei". Evtl. vorgenommene Änderungen der aktuellen Datei werden verworfen.

:r datei

Fügt die angegebene Datei bei der aktuellen Cursorposition ein. Auch hier kann der Expansionsmechanismus der Bash genutzt werden.

Text editieren

Wie bereits erwähnt, startet der Vim zunächst im Kommandomodus. Möchtest du Text eingeben oder editieren, wechselst du dazu in den Eingabemodus. Der Kommandomodus kann mit der Escape-Taste erreicht werden. Drückst du mehrmals die Escape-Taste, ist ein Signalton zu hören.

Folgende Tasten stehen zur Verfügung, um in den Eingabemodus zu wechseln:

i: Einfügen links vom Cursor. a: Einfügen rechts vom Cursor. I: Einfügen am Zeilenanfang. A: Einfügen am Zeilenende. o: Fügt eine neue Zeile hinter der aktuellen Zeile ein. O: Fügt eine neue Zeile vor der aktuellen Zeile ein. R: Überschreibt ab der Cursorposition.

Die folgenden Kommandos sind im Kommandomodus (zu Erreichen mit der Escape-Taste) einzugeben:

yy: Kopiert die aktuelle Zeile in einen Puffer. ny: Kopiert n+1 Zeilen in einen Puffer. yw: Kopiert ein Wort rechts vom Cursor in einen Puffer. nyw: Kopiert n Worte rechts vom Cursor in einen Puffer. yb: Kopiert ein Wort links vom Cursor in einen Puffer. nyb: Kopiert n Worte links vom Cursor in einen Puffer.

Du kannst aber auch anders vorgehen, um einen bestimmten Bereich des Textes in einen Puffer zu kopieren:

  • Wechseln in den Kommandomodus (Escape-Taste)
  • Bewegen des Cursors an Beginn/Ende des zu markierenden Textes
  • Druck auf die Taste v schaltet in den Visual-Modus um
  • Bewegen des Cursors an das Ende/Beginn des zu markierenden Textes
  • Druck auf die Taste y kopiert den markierten Text in einen Puffer und schaltet wieder in den Kommandomodus um Text einfügen
   Um Text aus einem Puffer einzufügen, stehen folgende Befehle im Kommandomodus zur Verfügung:

p Fügt Pufferinhalt nach aktuellem Wort oder nach aktueller Zeile ein (hängt vom Pufferinhalt ab) P Fügt den Pufferinhalt vor dem aktuellen Wort oder vor der aktuellen Zeile ein (hängt vom Pufferinhalt ab)

    • Text löschen

Befindet sich der Vim im Eingabemodus, kann die Backspace-Taste (Zurück-Taste) zum Löschen von Text benutzt werden.

    • Im Kommandomodus stehen aber auch folgende Tasten zur Verfügung:

x: Löscht das Zeichen an der Cursorposition nx: Löscht n Zeichen ab der Cursorposition X: Löscht ein Zeichen vor dem Cursor nX: Löscht n Zeichen vor dem Cursor dd: Löscht die aktuelle Zeile ndd: Löscht n Zeilen ab der Cursorposition nJ: Entfernt die Zeilenende-Zeichen der nächsten n Zeilen dL: Löscht alles bis zum unteren Bildschirmrand dw: Löscht das aktuelle Wort d): Löscht den Rest des aktuellen Absatzes D: Löscht alles bis aktuellem Zeilenende nD: Löscht bis aktuellem Zeilenende und die nächsten n-1 Zeilen

Auch zum Löschen von Text kann der Visual-Modus verwendet werden: Wechseln in den Kommandomodus (Escape-Taste) Mit v in den Visual-Modus umschalten Text markieren Mit Druck auf die Taste d wird der markierte Text gelöscht Text suchen und ersetzen

Selbstverständlich stehen auch Kommandos zum Suchen und Ersetzen von Text zur Verfügung:

/muster: Sucht im Text vorwärts nach eingegebenem Suchmuster ?muster: Sucht im Text rückwärts nach eingegebenem Suchmuster n: Wiederholt das letzte Suchkommando

s/alt/neu: Sucht und ersetzt alt durch neu (nur in der aktuellen Zeile)
s/alt/neu/g: Sucht und ersetzt alt durch neu in der ganzen Zeile
1,$s/alt/neu: Ersetzt im ganzen Dokument alt durch neu

Optionen im Kommandomodus

Die hier aufgeführten Optionen stehen zum Beispiel im Kommandomodus zur verfügung:

se option Anzeige des Wertes einer Option se all Anzeige der Werte aller Optionen

syntax on/off
           Farbliche (unter X) bzw. durch verschiedene Schriftarten hervorgehobene Syntax verschiedener Quelldateien (C, C++, Shellskripte, HTML...)
set bf

Entfernt alle Steuerzeichen aus dem Text

set ic

Die Groß-/Kleinschreibung von Kommandos wird nicht unterschieden

set nu

Zeilennummerierung wird aktiviert

set scroll=xx

Bestimmt den Scrollbereich (xx = Zeilen)

set sh=pfad_zu_shell
           Bestimmt die Shell, deren Kommandos innerhalb des Vim aufgerufen werden können
       :set ts=x
           Bestimmt die Länge des Tabulators (x = Zeichen)
       Anlegen einer Resourcendatei
       Möchtest du nicht alle individuellen Optionen des Vim bei jedem Start manuell setzen, kannst du dir eine Ressourcendatei erstellen. In diese trägst du die gewünschten Optionen ein, die dann bei jedem Aufruf des Vi geladen werden. Diese Ressourcendatei wird im Heimatverzeichnis abgelegt und bekommt den Namen .vimrc. Hier eine Beispieldatei, die die Zeilennummerierung aktiviert und eine Tabulatorbreite von 5 Zeichen festlegt:
       :set nu
       :set ts=5
       Den Editor beenden
       Zum Beenden von Vim stehen folgende Kommandos im Kommandomodus zur Verfügung:
       :w dateiname
           Speichert das geladene Dokument unter dem angegebenen Dateinamen ab. Hier kann der Expansionsmechanismus der Bash verwendet werden.
       :w >> dateiname
           Fügt das aktuelle Dokument an das Ende der angegebenen Datei.
       :q
           Beendet den Vi, ohne zu speichern. Funktioniert allerdings nur, wenn das Dokument nicht verändert wurde.
       :q!
           Beendet den Vi. Vorgenommene Änderungen werden verworfen und nicht gespeichert.
       :wn
           Speichert das aktuelle Dokument und öffnet das nächste Dokument.
       :x
           Speichert das aktuelle Dokument und beendet den Editor.