Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


admin_grundlagen:vim

Dies ist eine alte Version des Dokuments!


Überleben mit vi

Befehl Funktion
i Einfügemodus
<ESC> Befehlsmodus
:w speichern
:q! beenden ohne speichern
:wq speichern und beenden
:x speichern und beenden

Weitere Befehle

u Rückgängig
Strg+r undo Wiederherstellen
J hängt die nächste Zeile an das Ende der aktuellen Zeile an
nJ hängt n - Zeilen an das Ende der aktuellen Zeile an

Navigationsbefehle

suchen und ersetzen I

/ suchen

.. Suchwort eingeben ..

v visueller modus - zeichenweise
[Shift] v visueller modus - zeilenweise
[Strg] v visueller modus - spaltenweise

.. Suchwort markieren ..

c markierten text ändern

.. Ersatzwort eingeben

<ESC> Änderung beenden
n nächster Treffer
. letzen Befehl wiederholen

copy & paste

yy Zeile kopieren
dd Zeile ausschneiden
P einfügen
vwy Wort kopieren
yw Wort kopieren

Fortgeschrittene Befehle

Befehl Funktion
ZZ speichern & verlassen
:x speichern & verlassen

Suchen und Ersetzen II

Befehl Funktion
:g/^$/d Alle Leerzeilen löschen
:%s/suchwort/ersatz/gc suchen und ersetzen, mit Bestätigung

Dateinamen-Ergänzung a la Tab-Taste

Im Einfügemodus:

Strg+x f

Mehr dazu: vim.org Dokumentation

Mehrere Dateien bearbeiten

vi -o file1 file2 horizontaler Split
(Fenster wechseln mit Ctrl+W Cursortaste)
vi -O file1 file2 vertikaler Split (Dateien nebeneinander)
vi -p file1 file2 Tab-Modus
(Dateitabs wechseln mit g t (goto) - T für rückwärts

Konfigurationsdateien ohne Kommentare anzeigen

:set fdm=expr :set fde=getline(v:lnum)=~'^\\s*#'?1:getline(prevnonblank(v:lnum))=~'^\\s*#'?1:getline(nextnonblank(v:lnum))=~'^\\s*#'?1:0

Nützliche Informationen und Befehle

Vim öffnen:

vim <Datein> - öffnet mir eine leere Datei mit dem Namen welche ich beim öffnen angegeben habe vim + <Zeilennummer> + <Datei> - öffnet mir eine leere Datei mit dem Namen welchen ich angegeben habe und springt in die angegebene Zeile vim . - Ich kann mit die Datei aussuchen welche ich öffnen will. Durch den Punkt werden die Dateien aus dem aktuellen Verzeichnis angezeigt

Modis:

- Command/normal mode - Insert mode (zum normalen schreiben) - Ex mode (das was man kriegt, wenn man im command-mode „:“ drückt) - Visual mode

Command Mode:

im command-mode haben befehle den folgenden aufbau:

[count][command][range]

oder

[command][count][range]

[count] ist dabei optional. Es gibt an, wie oft [command] oder [range] ausgeführt werden soll.

Mit „range“ bezeichne ich sprungbefehle. Sie werden benutzt, um sich innerhalb der datei zu bewegen. Manche commands erwarten keine range.

Die wichtigsten Commands:

d - delete - löschen y - yank - in den zwischenspeicher kopieren yw - wort kopieren yy - Zeile kopieren 3yy - 3 Zeilen kopieren p - vorher kopiertes einfügen (put | leichter zu merken ist „paste“) P - vorher kopiertes *vor* dem cursor einfügen c - change - löschen, und danach in den insert-modus wechseln shift + J - fügt Zeilen zusammen

Die gebräuchlisten Ranges:

w - wort vorwärts springen b - wort rückwärts springen

Beispiele:

w - wort weiterspringen dw - wort löschen - command „delete“, reichweite „cursor bis sprungende“ (wort) einfach zu merken mit „del word“ d2w - einmal zwei worte löschen 2dw - zwei mal ein wort löschen (gleiches ergebnis wie d2w) 10i- - 10 „-“ einfügen (erst beim wechsel in den command-mode, da ja der ganze insert-mode (i) 10 mal ausgeführt wird)

Das ist der Grundsätzliche aufbau, den man mit allen anderen befehlen kombiniert.

Andere nützlichkeiten im command-mode:

. - letzes command wiederholen. cw - wort austauschen. Wie „dwi“. „change word“ i - in den insert-modus wechseln I - in den insert-modus wechseln und cursor an den anfang der zeile positionieren. Kurz: Wenn man etwas am anfang der zeile einfügen will a - append → wenn man etwas hinter dem cursor einfügen will A - append → wenn man etwas am ende der zeile einfügen will o - open new line - leerzeile anfügen + insert-mode O - open new line - leerzeile einfügen + insert-mode ddp - aktuelle zeile eins nach unten verschieben xp - buchstaben vertauschen

Bewegen im command-mode / „range“-befehle:

w - wort weiter springen W - wie w, überspringt aber mehr (z.B. kommas) b - wort zurück springen B - wie b, überspringt aber mehr (z.B. kommas) e - springt bis zum ende des wortes unter dem cursor E - wie E, überspringt aber mehr (z.B. kommas) { } - absatz vor/zurück springen. Sehr praktisch in einer .rhosts! 0 - pos1 $ - ende * - springt vorwärts zum nächsten vorkommen des wortes unter dem cursor # - springt rücwärts zum vorherigen vorkommen des wortes unter dem cursor

Suche:

/<was ich suche> (vorwärts) (mit n zum nächsten, mit strg + n zum vorherigen) ?<was ich suche> (rückwärts suche)

Insert Mode:

insert modus - wenn unten „insert“ steht. Was man drueckt wird direkt eingefuegt. Verlassen mit ESC

Ex Mode:

:w <Datei> - Speichert es in einer neuen Datei :e . - Eine andere Datei auf dem aktuellen Verzeichnis öffnen :e /etc/passwd - Die Datei passwd öffnen :tabnew - Neuen Tab erstellen :tabnext - In den nächsten Tab springen :tabclose - Tab schließen :redo - Holt mir meinen Text wieder wenn ich zuviele undos gemacht habe

Suchen und ersetzen:

:1,60 - ersetzen von Reihe 1-60 :1,$ - ganzer Text (bis Textende) :% - ganzer Text (ebenfalls bis Textende) :.,+10 - von der Courser Position an Zehn Zeilen :-5,10

:%s/bash$/sh/ - ersetzt bash wenn es am Ende steht durch sh :%s/bash/sh/ - ersetzt bash durch sh, aber pro Zeile nur den ersten treffen :%s/bash/sh/g - ersetzt bash durch sh, im ganzen Text, auch mehrmals pro Zeile wenn es vorkommt :%s/bash/sh/gc - ersetzt bash druch sh, im ganzen Text, auch mehrmals pro Zeiel wenn es vorkommt und man wird gefragt ob man das ändern will

:%s/^a/A/ - ersetzt alle kleingeschrieben a am Anfang jeder Zeile durch ein A

:help <Befehl> :syntax on - Syntax highlighting :set number :set nonumber :set list - Steuerzeichen anzeigen :set all - Zeigt alle befehle an in kombination mit set

Visual Mode:

neben den 3 standard-modi hat vim noch den Visual mode. Er ist wie normales markieren mit shift-cursortasten und wählt einen Bereich aus, den man dann mit commands editieren kann.

v normales markieren V zeilenweises markieren

Bsp: Block auskommentieren im Visual Mode:

Mit Strg-V in den Modus –VISUELL BLOCK– wechseln. | Die Zeilen die auskommentiert werden sollen mit den Cursor Tasten markieren. | Mit Shift-I in den Einfüge Modus wechseln. | Das Kommentarzeichen (z.B. #) einfügen. | ESC drücken um aus dem Modus zu kommen. | Die Zeilen bekommen wie von Zauberhand das '#' Zeichen vorangestellt. |

Bsp: Block entkommentieren im Visual Mode:

Mit Strg-V in den Modus –VISUELL BLOCK– wechseln. | Die Zeilen die entkommentiert werden sollen mit den Cursor Tasten markieren. | Die Entf Taste drücken. | Fertig. |

Alternative Editoren

Befehl SuSE Paket Debian Paket Fedora Paket
mcedit mc mc
e3ne e3 e3
aee aee

Dokus und Links

admin_grundlagen/vim.1331658334.txt.gz · Zuletzt geändert: 2012/03/13 17:05 von ingo_wichmann