Vim: Unterschied zwischen den Versionen

Aus SchnallIchNet
Wechseln zu: Navigation, Suche
Zeile 90: Zeile 90:
 
| ' Marke (Acccent aigu) || Sprung zum ersten Nicht-Whitespace-Zeichen der durch Marke markierten Zeile
 
| ' Marke (Acccent aigu) || Sprung zum ersten Nicht-Whitespace-Zeichen der durch Marke markierten Zeile
 
|}
 
|}
 +
  
 
==Standardkonfiguration anpassen==
 
==Standardkonfiguration anpassen==
 
Die Standardkonfigurationsdatei heisst ''vimrc'' und liegt in ''/etc/vim/'' (Ueberraschung ;-) )
 
Die Standardkonfigurationsdatei heisst ''vimrc'' und liegt in ''/etc/vim/'' (Ueberraschung ;-) )
 
Diese Datei kann man sich in sein eigenes Homeverzeichnis kopieren und dann dort die Anpassungen reinschreiben die man selbst gerne mag.
 
Diese Datei kann man sich in sein eigenes Homeverzeichnis kopieren und dann dort die Anpassungen reinschreiben die man selbst gerne mag.
Ich habe zum Beispiel das __set nu__ (kurz fuer set number) und __syntax on__ (Syntaxhighlighting) drin und noch ein tolles Feature: __set scrolloff=5
+
Ich habe zum Beispiel das '''set nu''' (kurz fuer set number) und '''syntax on''' (Syntaxhighlighting) drin und noch ein tolles Feature: '''set scrolloff=5''' (zeigt immer 5Zeilen ueber und unter der aktuellen Cursorpositon an, ist cool und nuetzlich.)
__ (zeigt immer 5Zeilen ueber und unter der aktuellen Cursorpositon an, ist cool und nuetzlich.)
+
Man kann diese Dinge natuerlich auch erst mal direkt eingeben zum ausprobieren:
 +
  :set nu
 +
  :syntax on
 +
  :set scrolloff=5
 +
 
 +
 
 +
==Makros==
 +
Noch ein tolles Feature von VIM ''Makros''.
 +
Starten mit '''q''' und einem beliebigen weiteren Buchstaben z.B. '''a'''.
 +
Dann steht unter auf einmal ein '''recording''' (Zauberrei :-) )
 +
 
 +
Jetzt kann man fast beliebig Textmanipulationen vornehmen z.B.:
 +
  '''n''' (next, zum naechsten Suchbegriff springen) '''cw''' (change word, das Wort austauschen) '''xxx''' (das gesuchte Wort durch xxx ersetzen)
 +
am Schluss muss man wieder ein '''q''' druecken (stop recording?)
 +
 
 +
Nun kann man das Makro durch ein
 +
  '''@a'''
 +
einmal aufrufen. Oder auch durch ein
 +
  '''100@a'''
 +
100-mal. Toll, oder?

Version vom 11. Januar 2009, 19:10 Uhr

Zeilennummern

:set number

Zeilennummern angezeigen

Einrueckung verhindern

:set noai

Modis

Die folgende Tabelle zeigt die wichtigsten Übergänge vom Kommando-Modus in die anderen Modi sowie die anschließende Rückkehr in den Kommando-Modus:

Wechsel zum durch Rückkehr zum Kommando-Modus
Einfüge-Modus Kommandos zum Einfügen von Zeichen und Zeilen
i a I A c C o O
Esc
Ersetzungs-Modus R Esc
Kommandozeilen-Modus  : /  ? ! * Esc zum Abbruch
* NewLine bzw. LineFeed (Enter-Taste) zur Ausführung des Kommandos
visuellen Modus v (zeichenweise Markierung)
V (zeilenweise Markierung)
Ctrl-V (Markierung rechteckiger Blöcke)
* Abbruch durch die Wiederholung des einleitenden Kommandos oder auch Esc
* Manipulation des markierten Blocks durch ein entsprechendes Kommando, z.B. d, c oder ~ (Tilde)
Select-Modus gh (zeichenweise Markierung)
gH (zeilenweise Markierung)
gCtrl-H (Markierung rechteckiger Blöcke)
* Abbruch durch Esc
* Manipulation des markierten Blocks durch ein entsprechendes Kommando. Die Eingabe eines druckbaren Zeichens bewirkt das Löschen des markierten Bereichs und den anschließenden Übergang in den Einfüge-Modus, wobei das eingegebene Zeichen an der aktuellen Cursor-Position in den Editor-Puffer eingefügt wird. Der Einfüge-Modus wird wie gewohnt durch Esc beendet.
Ex-Modus Q vi bzw. visual


Cursor positionierung

Befehl Beschreibung
[n] G Sprung zu bestimmter Zeile
Beispiele:
25G für Zeile 25
G ohne n für die letzte Zeile
für Spalte 10
| ohne n für die erste Spalte
0 (Zahl Null) Sprung zum Zeilenanfang (Spalte 1)
$ Sprung zum Zeilenende (letzte Spalte)
[n] w n Wörter vorwärts
[n] b n Wörter rückwärts
[n] W n WÖRTER vorwärts (WORT ist eine Folge von Nicht-Whitespace-Zeichen)
[n] B n WÖRTER rückwärts (WORT ist eine Folge von Nicht-Whitespace-Zeichen)
[n] H Cursor an den Anfang der n-ten vom oberen Rand gezählten Zeile eines Fensters positionieren
M Cursor an den Anfang der in der Mitte eines Fensters befindlichen Zeile positionieren
[n] L Cursor an den Anfang der n-ten vom unteren Rand gezählten Zeile eines Fensters positionieren
[n] Ctrl-F n Seiten vorwärts blättern
[n] Ctrl-B n Seiten rückwärts blättern
[n] Ctrl-D n Zeilen vorwärts blättern; wenn n fehlt: standardmäßig eine halbe Seite blättern
[n] Ctrl-U n Zeilen rückwärts rollen; wenn n fehlt: standardmäßig eine halbe Seite blättern
[n] Ctrl-E n Zeilen vorwärts rollen
[n] Ctrl-Y n Zeilen rückwärts rollen
[n] zt Zeile n oder (falls n fehlt) die aktuelle Zeile an den oberen Fensterrand verschieben
[n] zz Zeile n oder (falls n fehlt) die aktuelle Zeile in die Mitte des Fensters verschieben
[n] zb Zeile n oder (falls n fehlt) die aktuelle Zeile an den unteren Fensterrand verschieben
 % sucht für bestimmte Text-Elemente, die unter oder hinter dem Cursor stehen, den bzw. die zugehörigen Partner
Folgende Text-Elemente werden akzeptiert:
* runde, eckige und geschweifte Klammern: ( [ { } ] )
* Begrenzer von Kommentaren der Programmiersprache C: /* und */
* folgende Direktiven des C-Präprozessors:
#if, #ifdef, #else, #elif, #endif
[n] f Zeichen nach rechts zum n-ten Zeichen gehen
[n] t Zeichen nach rechts bis vor das n-te Zeichen gehen
[n] F Zeichen nach links zum n-ten Zeichen gehen
[n] T Zeichen nach links bis hinter das n-te Zeichen gehen
[n] ; das letzte f-, F-, t- oder T-Kommando n Mal wiederholen
[n] , das letzte f-, F-, t- oder T-Kommando n Mal in entgegengesetzter Richtung wiederholen
m Marke Setzen einer Marke an der aktuellen Cursor-Position
Marke ist ein einzelner Buchstabe, wobei sich Kleinbuchstaben immer auf den aktuellen Editor-Puffer beziehen, wogegen Großbuchstaben für alle aktuell geladenen Puffer global gültig sind. Das Setzen einer Marke verändert die Cursor-Position nicht.
Beispiel:
ma setzt Marke a
` Marke (Accent grave) Sprung zu einer vorher gesetzten Marke
' Marke (Acccent aigu) Sprung zum ersten Nicht-Whitespace-Zeichen der durch Marke markierten Zeile


Standardkonfiguration anpassen

Die Standardkonfigurationsdatei heisst vimrc und liegt in /etc/vim/ (Ueberraschung ;-) ) Diese Datei kann man sich in sein eigenes Homeverzeichnis kopieren und dann dort die Anpassungen reinschreiben die man selbst gerne mag. Ich habe zum Beispiel das set nu (kurz fuer set number) und syntax on (Syntaxhighlighting) drin und noch ein tolles Feature: set scrolloff=5 (zeigt immer 5Zeilen ueber und unter der aktuellen Cursorpositon an, ist cool und nuetzlich.) Man kann diese Dinge natuerlich auch erst mal direkt eingeben zum ausprobieren:

 :set nu
 :syntax on
 :set scrolloff=5


Makros

Noch ein tolles Feature von VIM Makros. Starten mit q und einem beliebigen weiteren Buchstaben z.B. a. Dann steht unter auf einmal ein recording (Zauberrei :-) )

Jetzt kann man fast beliebig Textmanipulationen vornehmen z.B.:

 n (next, zum naechsten Suchbegriff springen) cw (change word, das Wort austauschen) xxx (das gesuchte Wort durch xxx ersetzen)

am Schluss muss man wieder ein q druecken (stop recording?)

Nun kann man das Makro durch ein

 @a

einmal aufrufen. Oder auch durch ein

 100@a
100-mal. Toll, oder?