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 vim steht für "visual editor, improved" Entwicklung: ed, ex, vi,... (vim, gvim) Konzept: Datei Cursor Bearbeitungsfenster Bedienung über folgende Modi: Bearbeitungsmodus (beginnen z.b. mit "i", beenden mit "[Esc]) Command (ein oder mehrere Zeichen, Beispiele: s.u.) Commandline (beginnt mit ":", endet mit [Return]) Erste Schritte [Strg]+g status :w Dateiname [Return] speichern :q [Return] beenden :q! [Return] :wq [Return] :wq! [Return] beenden ohne speichern speichern und beenden (auch ZZ, :x) speichern und beenden, dabei ggf. überschrieben Seite: 1
Navigation Cursortasten hkjl + - Enter w W b B gg G 200G 0 $ schrittweise wortweise Dateianfang Ende Zeile 200 Zeilenanfang Zeilenende Einfügen i I o O a A am Cursor am Zeilenanfang (falls Block markiert: vor dem Block) über dem Cursor unter (Zeile) dem Cursor hinter dem Cursor am Zeilenende Löschen x X 30x dw D dd 2dd dg d) d( d} d{ löscht das Zeichen unter dem cursor (Entf.) löscht das Zeichen VOR dem Cursor (Backspace) 30 Zeichen bis zum Wortende bis Zeilenende (entspr. d$) aktuelle Zeile zwei Zeilen bis Dateiende bis Satzende ab Satzanfang bis Absatzende ab Absatzanfang Seite: 2
Löschungen landen im Puffer "*" (Zwischenablage) Undo/Redo u [Strg]+r u undo redo. letztes Kommando wiederholen 200. letztes Kommando 200 mal wiederholen Copy/Paste Text markieren: [gehe zu Anfang] v [gehe zu Ende] [gehe zu Anfang] V [gehe zu Ende] [gehe zu Anfang] [Strg]+v [gehe zu Ende] zeichenweise markieren zeilenweise markieren blockweise markieren In Zwischenablage kopieren: y yy y/j (yank) markierten Bereich ganze Zeile alle Zeichen bis zum nächsten j Zwischenablage einfügen: p P paste nach/rechts von Cursor paste vor/links von Cursor Beispiele: ddp xp Zeilen vertauschen Zeichen vertauschen Ändern rj 5rj R C cw c) c( c} c{ ersetzt aktuelles Zeichen durch j ersetzt nächste 5 Zeichen durch j R wechselt in Überschreiben-Modus C ersetzt bis Zeilenende (entspr. c$) cw ersetzt bis Wortende ersetzt bis Satzende ab Satzanfang ersetzt bis Absatzende ab Absatzanfang Seite: 3
Suchen /xyz?xyz n N * # nach unten suchen nach oben suchen zum nächsten Treffer zum vorherigen Treffer nächstes Vorkommen aktuelles Wort vorheriges Vorkommen % gehe zu Gegenklammer :set hls [Return] :set nohls [Return] zt zb zz Hervorhebungen (Highlightsearch) aktivieren deaktivieren 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 c i global (mehrmals pro Zeile) confirm ignore-case Beispiele: :%s/flasch/falsch/gci [Return] :%s,/,\,g [Return] flasch durch falsch ersetzen Slashes umdrehen Shell-Aufrufe Seite: 4
:!ls [Return] v [Cursortasten] :!sort [Return] :%!wc [Return] K Verzeichis auflisten Markierte Zeilen sortieren Alle Buchstaben, Wörter und Zeilen zählen Manpage zu Wort unter Cursor aufrufen Fenster vim -o Datei1 Datei2... :split [Return] :vsplit [Return] :split Dateiname [Return] :vsplit Dateiname [Return] [Strg]+w [Cursortaste] [Strg]+w [Strg]+f [Strg]+w c :q [Strg]+w o :only [Strg]+w + [Strg]+w - [Strg]+w < [Strg]+w > 20[Strg]+w + Mehrer Fenster untereinander Mehrere Bearbeitungsfenster derselben Datei untereinander, nebeneinander Weitere Datei in neuem Bearbeitungsfenster öffnen in anderes Bearbeitungsfenster wechseln öffne Datei unter Cursor in neuem Fenster close only one window vertikal verkleinern, vertikal vergrößern, horizontal verkleinern, horizontal vergrößern aktuelles Bearbeitungsfenster um 20 Zeilen vergrößern Completion [Strg]+x [Strg]+n [Strg]+x [Strg]+p [Strg]+x [Strg]+f [Strg]+n [Strg]+p next previous Filesystem Vorschlag weiter, zurück Syntax Highlighting :syntax on [Return] :set bg=dark [Return] :set bg=light [Return] :set syntax=php [Return] Syntaxhighlighting aktivieren Kontrastverbesserung für schwarzen, weissen Hintergrund Syntaxhighlighting für Sprache "PHP" auswählen Seite: 5
Dateien vergleichen vim -d Datei1 Datei2... :diff zo zc grafischer Diff refresh open fold close fold Seite: 6