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
Grundlagen
Navigationsbefehle I
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
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
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
Zeilennummern ein-/ausschalten
:set number
:set nonumber
Steuerzeichen anzeigen
Navigationsbefehle II
{ | zum nächsten Absatz |
} | zum vorherigen Absatz |
* | |
# | |
Modi:
Command/normal Mode
Insert Mode (zum normalen Schreiben)
Ex Mode (das was man kriegt, wenn man im command-Mode „:“ drückt)
Visual Mode
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