vi-Training


Johannes Franken
<jfranken@jfranken.de>



Inhalt

  1. Konzept
  2. Erste Schritte
  3. Navigation
  4. Einfügen
  5. Löschen
  6. Undo/Redo
  7. Copy/Paste
  8. Ändern
  9. Suchen
  10. Ersetzen
  11. Shell-Aufrufe
  12. Fenster
  13. Completion
  14. Syntax Highlighting
  15. Dateien vergleichen

Konzept

Erste Schritte

[Strg]+g status
:w Dateiname [Return] speichern
:q [Return] beenden
:q! [Return] beenden ohne speichern
:wq [Return] speichern und beenden (auch ZZ, :x)
:wq! [Return] speichern und beenden, dabei ggf. überschrieben

Navigation

Cursortasten
hkjl
+
-
Enter
schrittweise
w
W
b
B
wortweise
gg
G
200G
Dateianfang
Ende
Zeile 200
0
$
Zeilenanfang
Zeilenende

Einfügen

i am Cursor
I am Zeilenanfang (falls Block markiert: vor dem Block)
o über dem Cursor
O unter (Zeile) dem Cursor
a hinter dem Cursor
A am Zeilenende

Löschen

x löscht das Zeichen unter dem cursor (Entf.)
X löscht das Zeichen VOR dem Cursor (Backspace)
30x 30 Zeichen
dw bis zum Wortende
D bis Zeilenende (entspr. d$)
dd aktuelle Zeile
2dd zwei Zeilen
dG bis Dateiende
d)
d(
bis Satzende
ab Satzanfang
d}
d{
bis Absatzende
ab Absatzanfang
Löschungen landen im Puffer "*" (Zwischenablage)

Undo/Redo

u u undo
[Strg]+r redo
. letztes Kommando wiederholen
200. letztes Kommando 200 mal wiederholen

Copy/Paste

Text markieren:
[gehe zu Anfang] v [gehe zu Ende] zeichenweise markieren
[gehe zu Anfang] V [gehe zu Ende] zeilenweise markieren
[gehe zu Anfang] [Strg]+v [gehe zu Ende] blockweise markieren
In Zwischenablage kopieren:
y (yank) markierten Bereich
yy ganze Zeile
y/j alle Zeichen bis zum nächsten j
Zwischenablage einfügen:
p paste nach/rechts von Cursor
P paste vor/links von Cursor
Beispiele:
ddp Zeilen vertauschen
xp Zeichen vertauschen

Ändern

rj ersetzt aktuelles Zeichen durch j
5rj ersetzt nächste 5 Zeichen durch j
R R wechselt in Überschreiben-Modus
C C ersetzt bis Zeilenende (entspr. c$)
cw cw ersetzt bis Wortende
c)
c(
ersetzt bis Satzende
ab Satzanfang
c}
c{
ersetzt bis Absatzende
ab Absatzanfang

Suchen

/xyz nach unten suchen
?xyz nach oben suchen
n
N
zum nächsten Treffer
zum vorherigen Treffer
*
#
nächstes Vorkommen aktuelles Wort
vorheriges Vorkommen
% gehe zu Gegenklammer
:set hls [Return]
:set nohls [Return]
Hervorhebungen (Highlightsearch) aktivieren
deaktivieren
zt
zb
zz
Bearbeitungsfenster so verschieben, dass Cursor ganz oben (top)
unten (bottom)
Mitte (zenter)

Ersetzen


:Bereich s/vorher/nacher/Optionen
Listing: s Syntax

Bereich:
ohne oder . nur aktuelle zeile
% gesamte Datei
3,500 Zeilen 3 bis 500
v
V
[Strg]+v
nur innerhalb der Markierung
Optionen:
g global (mehrmals pro Zeile)
c confirm
i ignore-Case
Beispiele:
:%s/flasch/falsch/gci [Return] flasch durch falsch ersetzen
:%s,/,\,g [Return] Slashes umdrehen

Shell-Aufrufe

:!ls [Return] Verzeichis auflisten
v [Cursortasten] :!sort [Return] Markierte Zeilen sortieren
:%!wc [Return] Alle Buchstaben, Wörter und Zeilen zählen
K Manpage zu Wort unter Cursor aufrufen

Fenster

vim -o Datei1 Datei2 ... Mehrer Fenster untereinander
:split [Return]
:vsplit [Return]
Mehrere Bearbeitungsfenster derselben Datei untereinander,
nebeneinander
:split Dateiname [Return]
:vsplit Dateiname [Return]
Weitere Datei in neuem Bearbeitungsfenster öffnen
[Strg]+w [Cursortaste] in anderes Bearbeitungsfenster wechseln
[Strg]+w [Strg]+f öffne Datei unter Cursor in neuem Fenster
[Strg]+w c
:q
close
[Strg]+w o
:only
only one window
[Strg]+w +
[Strg]+w -
[Strg]+w <
[Strg]+w >
vertikal verkleinern,
vertikal vergrößern,
horizontal verkleinern,
horizontal vergrößern
20[Strg]+w + aktuelles Bearbeitungsfenster um 20 Zeilen vergrößern

Completion

[Strg]+x [Strg]+n next
[Strg]+x [Strg]+p previous
[Strg]+x [Strg]+f Filesystem
[Strg]+n
[Strg]+p
Vorschlag weiter,
zurück

Syntax Highlighting

:syntax on [Return] Syntaxhighlighting aktivieren
:set bg=dark [Return]
:set bg=light [Return]
Kontrastverbesserung für schwarzen,
weissen Hintergrund
:set syntax=php [Return] Syntaxhighlighting für Sprache "PHP" auswählen

Dateien vergleichen

vim -d Datei1 Datei2 ... grafischer Diff
:diff refresh
zo open fold
zc close fold

$Id: vi.wml,v 1.3 2009-09-19 20:16:53 jfranken Exp $ [ChangeLog]
$Id: template.inc,v 1.82 2010-09-04 12:58:17 jfranken Exp $ [ChangeLog]
© Johannes Franken. Impressum und Haftungsausschluß
Valid XHTML 1.0!