Samstag, 5. Mai 2012

Meine Zeit mit Vim: Stunde 5

Es wird Zeit für einen ersten Kompilierungsvorgang mit Vim. Hin- und Herspringen, Editieren und Suchen ist zwar schön und gut und muss trainiert werden - doch eine Belohnung nach all der harten Arbeit ist schon mal angebracht. Mein Ziel heißt also: die PrimeNumbersKata, die ich noch mit Visual Studio erstellt hatte, von Vim aus zu kompilieren.

Um mit Vim kompilieren zu können, muss man ein paar Einstellungen tätigen - klar, ist ja primär auch keine Entwicklungsumgebung für .NET. Kevin Berridge schreibt hier, was zu tun ist. Zumindest theoretisch, falls alle Vorraussetzungen gegeben sind... was bei mir natürlich nicht der Fall war. Auch gut, lernt man bei der Fehlersuche schon etwas mehr über Vim.

Man startet den build nicht mit einem schnöden Tastendruck auf F6 wie in Visual Studio, sondern mit dem :make Befehl - ist gleich viel geekier. Dieser muss aber erst noch konfiguriert werden:

:set makeprg=build.bat

Die build.bat-Datei habe ich in das entsprechende Projekt-Verzeichnis gelegt mit folgendem Inhalt:

msbuild /nologo /v:q

Funktioniert prima - allerdings erst, nachdem ich den Pfad zu msbuild.exe in die Path-Variable mit aufgenommen habe und auch nur vom Command Prompt aus, sprich, wenn ich die build-Datei direkt ausführe. Gebe ich :make in Vim ein, bekomme ich nur

Shell gab 1 zurück

angezeigt. 1 zurück zu bekommen ist immer schlecht; das weiß ich noch von MS-DOS 6.0-Zeiten. Ich hatte Vim direkt gestartet dann mit :e die Datei geöffnet. Nicht gut: so ist das Arbeitsverzeichnis nicht das, wo die zu kompilierende Projektdatei liegt. Also: entweder über die Kommandozeile die Datei in ihrem Verzeichnis öffnen oder mit :cd das Arbeitsverzeichnis von Vim auf den entsprechenden Ort ändern. Dann klappt's auch mit dem Kompilieren :)

Wunderbar - und um nicht ganz das Visual Studio-Feeling zu verlieren, habe ich mir doch noch ein schnödes Tastenkürzel eingerichtet, was ich hier gefunden habe:

:map <F6> :make<CR><C-w><Up>

Nun kann ich genauso wie in Visual Studio kompilieren, denn mit dem :map-Befehl kann Shortcuts erstellen. Meiner ruft nun :make auf und navigiert wieder zurück zu der zuletzt bearbeiteten Datei.

Was ich gelernt habe

  • :set makeprg=build.bat Wählt das Programm, welches mit :make ausgeführt werden soll
  • :cd Wechselt das Arbeitsverzeichnis
  • :map <F6> :make<CR><C-w><Up> Kompiliert mit <F6> und kehrt zur Datei zurück

Mittwoch, 2. Mai 2012

Meine Zeit mit Vim: Stunde 4

Die Geister, die ich rief

Highlighting kenne ich ja seit Visual Studio 2010 - und möchte es nicht mehr missen. Das Suchen-Kommando von Vim (/[string]) funktioniert ähnlich: tippe ich z.B. /the<Enter> ein, werden alle Vorkommen dieser Zeichenkette farbig hinterlegt. Nicht ganz so komfortabel wie in meiner altbekannten IDE, aber ich wette, das kriegt man auch hin.

Das eigentliche Problem wurde mir erst nach dem erfolgreichen Highlighting bewusst: wie bekomme ich die ganzen gelben Dopser wieder weg? In der Hilfe steht zwar ausführlich, wie man vor, zurück und wiederholt sonst wo hin suchen kann - und ein schlichtes <ESC> bricht zwar die Suche ab, doch das hinterlassene visuelle Schlamassel bleibt:


Schlau wie ich bin, suche ich einfach nach "fdfadsfdsafdfdsds". Das gibt es natürlich nicht und wo nichts ist, kann auch nichts gehighlighted werden. Erst 120 Zeilen später steht die Lösung: :nohlsearch. Da finde ich ja mein "Kommando" wesentlich eingängiger...

Was ich gelernt habe

  • H = Home, M = Middle, L = Last
  • <Ctrl>-u scrollt eine halbe Seite hoch, <Ctrl>-d eine halbe Seite runter
  • <Ctrl>-b scrollt fast eine ganz Seite hoch, <Ctrl>-f fast eine ganz Seite runter
  • zz scrollt so, dass der Cursor in der Mitte der Seite ist
  • /[string] sucht nach dem nächsten Vorkommen von [string], ?[string] such rückwärts, n geht zum nächsten Funkstück, N zum vorherigen
  • * sucht nach dem Wort unter dem Cursor, # sucht nach dem Wort zurück
  • Reguläre Ausdrücke funktionieren auch im Suchstring
  • <Ctrl>-o springt zur letzten Cursorposition (sowas wie <Ctrl>-- in Visual Studio), <Ctrl>-i vorwärts
  • m[Buchstabe] setzt ein Lesezeichen, '[Buchstabe] besucht es