Inhaltsverzeichnis

vi überleben

Für Debian/Ubuntu empfohlen: Das Paket vim installieren, welches eine komfortablere Version von vi enthält. Dann wird u.a. immer angezeigt, wenn sich der Editor im Einfüge-Modus befindet.

Befehl Funktion
i Einfügemodus (insert)
<ESC> Befehlsmodus
:w speichern (write)
:q beenden (quit)
:q! beenden ohne speichern
:wq speichern und beenden
u Rückgängig (undo)
Strg+r undo Wiederherstellen (redo)

In älteren Vim-Versionen nützlich:

J hängt die nächste Zeile an das Ende der aktuellen Zeile an (join)

VIM lernen

vimtutor

Grundlagen

Aufbau: [Anzahl] Befehl

Beispiel: 10w (10 Wörter weiter springen)

w ein Wort weiter (word)
b ein Wort zurück (back)
e zum nächsten Wortende (end)
0 zum Zeilenanfang
$ zum Zeilenende
gg Dateianfang (go)
10gg Zeile 10
G letzte Zeile
/ Vorwärts suchen
? Rückwärts suchen
n Zum nächsten Treffer in gleicher Richtung springen (next)
N Zum nächsten Treffer in entgegengesetzter Richtung springen

Änderungsbefehle I

Aufbau: [Anzahl] Befehl Anwendungsbereich

Anzahl ist dabei optional. Es gibt an, wie oft der Befehl ausgeführt werden soll. Mit Anwendungsbereich bezeichne ich Navigationsbefehle. Sie werden benutzt, um sich innerhalb der Datei zu bewegen. Manche Befehle erwarten keinen Anwendungsbereich.

Beispiel: cwERSATZTEXT (Text bis zum nächster Wort durch ERSATZTEXT ersetzen)

c… ersetzen (change)
cw Wort ersetzen (change word)
cc Zeile ersetzen
C bis zum Ende der Zeile ersetzen
. letzten Befehl wiederholen

Anwendungsbeispiel: suchen und ersetzen I

/ suchen
.. Suchwort eingeben ..
cw 1 Wort ersetzen
.. Ersatzwort eingeben ..
<ESC> Änderung beenden
n zum nächsten Treffer springen
. Ersetzung wiederholen

copy & paste

d… ausschneiden (delete)
dw Wort ausschneiden (delete word)
dd Zeile ausschneiden
D bis zum Ende der Zeile ausschneiden
y… kopieren (yank)
yw Wort kopieren
yy Zeile kopieren
Y Zeile kopieren
y$ bis zum Ende der Zeile kopieren
einfügen (paste)
P an aktueller Position einfügen
p nach aktueller Position einfügen

Visueller Modus

v markieren (visual)
V markieren, zeilenweise
Strg+v markieren, blockweise

Anwendungsbeispiel: suchen und ersetzen II

/ suchen
.. Suchwort eingeben ..
vec 1 Wort ersetzen
.. Ersatzwort eingeben ..
<ESC> Änderung beenden
n zum nächsten Treffer springen
. Ersetzung wiederholen

Text Markieren

vip aktuellen Absatz markieren
vit Text innerhalb des aktuellen xml-Tags markieren
vi( oder vib Text innerhalb der (Klammern) markieren
vi{ oder viB Text innerhalb der {Klammern} markieren
vi[ Text innerhalb der [Klammern] markieren
vi" Text innerhalb der "Anführungszeichen" markieren
vi' Text innerhalb der 'Anführungszeichen' markieren
vap aktuellen Absatz inklusive Leerzeilen außenrum markieren
vat Text um das aktuelle xml-Tag markieren
va( oder vab Text inklusive der (Klammern) markieren
va{ oder vaB Text inklusive der {Klammern} markieren
va[ Text inklusive der [Klammern] markieren
va" Text inklusive der "Anführungszeichen" markieren
va' Text inklusive der 'Anführungszeichen' markieren

Quelle: http://vimdoc.sourceforge.net/htmldoc/motion.html#object-select

weitere Wege in den Einfügemodus

i an der aktuellen Position
I am Zeilen- bzw. Blockanfang
a hinter der aktuellen Position
A am Zeilen- bzw. Blockende
o neue Zeile darunter einfügen
O neue Zeile darüber einfügen

Beispiel Texte

vim beispiel texte zum Üben

Suchen und Ersetzen III

Befehl Funktion
:%s/suchwort/ersatz/g suchen und ersetzen (substitute, global)
:g/^$/d Alle Leerzeilen löschen

Eingabehilfen im Einfügemodus

Strg+n Wort-Ergänzung
Strg+x f Dateinamen-Ergänzung a la Tab-Taste

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

Einstellungen

Den vim.tiny smart machen

Folgende Zeilen in der ~/.vimrc sorgen dafür, dass auch im vim.tiny im Insert-Modus die Cursortasten und Backspace vernünftig, auch über die Grenzen des gerade eingefügten Textes hinaus, funktionieren:

set nocompatible
set backspace=2

Groß-/Kleinschreibung beim Suchen ignorieren

:set ignorecase

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

Syntax-Highlighting einschalten

:syntax on

Zeilennummern ein-/ausschalten

:set number
:set nonumber

Steuerzeichen anzeigen

:set list

Navigationsbefehle II

{ zum nächsten Absatz
} zum vorherigen Absatz
*
#

Weitere Informationen und Befehle

Modi:

Ex Mode

Befehl Funktion
ZZ speichern & verlassen
:x speichern & verlassen
:w <Datei> Speichert es in einer neuen Datei
:e . Eine andere Datei auf dem aktuellen Verzeichnis öffnen
:e /etc/passwd Die Datei passwd öffnen
:r /etc/hosts Den Inhalt der angegebenen Datei an die Cursorposition des offenen Dokuments einlesen
:tabnew Neuen Tab erstellen
:tabnext In den nächsten Tab springen
:tabclose Tab schließen
:redo Holt den Text wieder wenn ich zuviele undos gemacht habe
:help <Befehl>
:set all Zeigt alle Befehle an in Kombination mit set

Alternative Editoren

Eigentlich keine.

Befehl SuSE Paket Debian Paket CentOS Paket Beschreibung
mcedit mc mc Teil vom Midnight Commander
nano

Dokus und Links