Warning: include_once(/var/www/html/pmwiki-2.2.86/cookbook/soap4pmwiki/soap4pmwiki.php): failed to open stream: No such file or directory in /var/www/html/fields/dbp11/local/config.php on line 4

Warning: include_once(): Failed opening '/var/www/html/pmwiki-2.2.86/cookbook/soap4pmwiki/soap4pmwiki.php' for inclusion (include_path='.:/opt/php/lib/php') in /var/www/html/fields/dbp11/local/config.php on line 4

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/fields/dbp11/local/config.php:4) in /var/www/html/pmwiki-2.2.86/pmwiki.php on line 1250
Datenbankpraktikum SS 2011 - Allgemeines - Vim

Ein paar Tips zur Nutzung von VIM

Allgemeines

Modi

Vi(m) ist ein "Mode-basierter" Editor. Grundsaetzlich wird zwischen Insert- und Normalmode unterschieden, wobei einige Menschen auch noch den Kommando-Modus aufzaehlen wuerden. Der "Standardmodus" -- gleichzeitig der, in dem man die meiste Zeit verbringen sollte, wenn man Vim effizient benutzen will -- ist der Normalmode.

Mit ESC (im Insertmode alternativ auch jj) gelangt man von jedem anderen Modus zurueck in den Normalmode. Bis auf das eigentliche Einfuegen von neuem Text finden alle Aenderungen an der Datei in diesem Modus statt.

Der Insertmode

Aus dem Normalmode gelangt man mit i in besagten Insertmode. Hier kann man (sollte aber nicht) sich -- wie gewohnt -- mit den Pfeiltasten durch das Dokument bewegen und Text einfuegen. Eingefuegt wird dabei vor dem Zeichen, auf dem der Cursoer zuvor positioniert war. Moechte man hinter dem aktuellen Zeichen einfuegen, benutzt man a, um in den Insertmodus zu gelangen.

Geht man mit I in den Insertmode, wird der Cursor zuvor auf das erste Nicht-Leerzeichen der Zeile Positioniert. A erlaubt es einem, Text sofort ans Ende der Zeile einzufuegen. Drueckt man o, wird eine neue Zeile unter der aktuellen eingefuegt und der Insertmode betreten. O ("Oh") macht das selbe mit einer neuen Zeile ueber der aktuellen.

Der Visual Mode

Eine Besonderheit des Vim (Betonung auf das m) ist der Visual Mode, in den man mit v gelangt. Dieser erlaubt einem eine visuelle Auswahl von Text, wie von herkoemmlichen Editoren gewoehnt. Mit V gelangt man in den Visual Line Mode, der nur ganze Zeilen auswaehlen kann, dies aber entsprechend leichter macht. Die Auswahl des Visual Modes kann man sehr leicht manipulieren; d im Visual Mode loescht z.B. die Auswahl und y kopiert sie.

Navigation

Anstelle der Pfeiltasten benutzt man zur Navigation im Vim die Tasten h, j, k und l im Normalmode. Diese Bewegen den Cursor entsprechend nach links, unten, oben und rechts. Groessere Spruenge kann man z.B. mit Strg+f (Seite runter) und Strg-b (Seite rauf) bewirken. Zum ersten Nicht-Leerzeichen der Zeile springt man mit ^ und zum tatsaechlichen Anfang der Zeile mit 0 ("Null"). Ans Ende gelangt man mit $. Man kann sich auch Wortweise bewegen: w Bewegt den Cursor zum Anfang des naechsten Wortes, b zum Anfang des Wortes, ueber dem der Cursor sich gerade befindet, bzw. zum Anfang des vorherigen Wortes, wenn der Cursor bereits am Anfang eines Wortes steht. e bewegt den Cursor zum Ende des aktuellen bzw. naechsten Wortes (Pro-Tip: ea laesst einen Text an das aktuelle Wort anhaengen.

Suche

Suchen kann man im Normalmode mit /. Diese Suche unterstuetzt sogar Regulaere Ausdruecke und durchsucht das Dokument angefangen mit der aktuellen Cursorposition. Wird das Suchmuster bis zum Ende der Datei nicht gefunden, wird die Suche am Anfang fortgesetzt. Hat man die Suche mit Enter bestaetigt, kann man mit n zum naechsten Vorkommen des Suchmusters springen und mit N zum vorherigen. Will man direkt "rueckwaerts" suchen, so benutzt mmitan ? (n und N funktionieren dann entsprechend umgekehrt).

Haeufig will man auch nur einzelne Zeichen suchen. Dies geht mit fx und tx. Dabei steht das x fuer das gesuchte Zeichen. tx positioniert den Cursor vor das naechste Aufkommen des Zeichens x (funktioniert nur in der aktuellen Zeile). fx Positioniert den Cursor auf das Zeichen. Fx und Tx suchen entsprechend rueckwaerts. ; wiederholt die letzte "Zeichensuche".

Cut, Copy & Paste

Sowohl loeschen, als auch kopieren transferiert in Vi den betroffenen Text in eine Art Clipboard. Das Zeichen unter dem Cursor loescht man mit x. Andere "Textobjekte" loescht man mit dx, wobei x in diesem Fall fuer ein Textobjekt steht. Textobjekte sind Bewegungsbefehle (dw loescht bspw. ein Wort) oder fortgeschrittenere Dinge wie z.B. @i(, wobei i fuer "inner" steht. di( loescht das innere des Klammerausdrucks, in dem sich der Cursor gerade befindet. dd loescht eine ganze Zeile.

Mit yx kann man entsprechend kopieren, wobei x wieder fuer ein Textobjekt steht. yy Kopiert die gesamte Zeile. Mit p kann man den aktuellen Inhalt des Clipboards vor das Zeichen, auf dem der Cursor steht einfuegen, mit P dahinter.

cx, wobei wieder x fuer ein Textobjekt steht, loescht wie dx, versetzt den Editor aber anschliessend sofort in den Insertmode.

Sonstiges

. wiederholt das letzte Kommando im Normalmode. Jedem Befehl im Normalmode kann eine Zahl vorangestellt werden, um diesen Befehl entsprechend oft auszufuehren. 3)f springt z.B. zur dritten schliessenden Klammer hinter dem Cursor.

Beenden kann man den Vi mit :q. Vorher sollte man sein Werk allerdings mit :w speichern, da der Editor ansonsten meckert. Moechte man einmal wirklich ohne zu Speichern beenden, so gibt man :q! an. Die Kommandos :w und :q koennen auch kombiniert werden: :wq.

Plugins

BufferExplorer

Da man meistens mehrere Datei offen hat, ist es hilfreich ein Tool zu haben, das einem den Wechsel zwischen den geöffneten Dateien erleichtert. Mit dem Befehl ,be startet man den BufferExplorer, der alle offenen Dateien zeigt. Mit <CR> (CR=CarriageReturn=Entertaste) wechselt man zu dem Buffer unter dem Cursor. Mit q schießt man den BufferExplorer wieder.

Weitere Informationen erhaltet ihr mit :help bufexplorer.

NERDTree

Der NERDTree ist ein Verzeichnisbaum zur Navigation im Projekt. Ihr öffnet ihn mit ,p. Geschlossen werden kann er dann wieder mit ,p oder mit q. Welche Tasten man für welche Aktion drücken muss, oder was ein Mausklick bewirkt, das könnt ihr unter :help NERDTree im Abschnitt 2.3 NERD tree mappings nachlesen.

Rails

Ein Plugin, das viele hilfreiche Features für die Railsentwicklung bietet. Man schaue den Screencast oder benutze :help rails.

Snippets

Es gibt eine recht große Sammlung von Code-Snippets. Wenn man eine Datei des entsprechenden Typs öffnet, werden die passenden Snippets automatisch geladen. Welche Snippets es gibt könnt ihr hier sehen.

Der Trigger des Snippets ist der Name der Datei, in der er liegt. Ein * im folgenden Beispiel markiert die Cursorposition. Nehmen wir an, wir befinden uns in einer Ruby-Datei namens foo.rb und wollen eine Klasse schreiben, wir schreiben also:

class*

Nun drückt man TAB und triggert damit das Snippet ruby/class.snippet, das führt zu:

class *Foo
end

Drückt man nun ein weiteres Mal TAB, so kommt man direkt zu der Stelle, wo man schreiben möchte:

class Foo
  *
end


Page last modified on July 26, 2011, at 05:44 PM