Mini-Tutorial fuer FuzzyFinder: TextMate, Teil 2
Bisher haben wir mit der Texteingabe von FuzzyFinder:TextMate die Dateinamen in einem beliebigen Verzeichnis in unserer Verzeichnisstruktur durchsucht. Hier nochmal die Verzeichnisstruktur:
app/models/post.rb app/models/user.rb app/controller/post_contoller.rb app/controller/user_contoller.rb test/functional/user_controller_test.rb test/unit/post_test.rb test/unit/user_test.rb
Im Folgenden soll die Datei test/functional/user_controller_test.rb geöffnet werden. Die Eingabe uct in FuzzyFinder:TextMate-Modus liefert schon fast das exakte Ergebnis:
Es mischen sich Dateien in das Resultat ein, die aus anderen Unterverzeichnissen stammen als aus dem Verzeichnis test/. Wäre die Beispielverzeichnisstruktur etwas grösser, würden unter Umständen 100te Dateien aufgelistet werden.
Man kann in FuzzyFinder:TextMate aber auch die gewuenschten Verzeichnisse auf dem Weg zum Dateinamen spezifizieren, so dass man die Suchresultate auf ein Minimum reduzieren kann, falls man genau weiss, wie der ungefaehre Pfad zur Zieldatei ist.
Mit der Eingabe f/uct bestimmt man, dass auf dem Weg zur gesuchten Datei ein Verzeichnis den Buchstaben f im Namen tragen muss, was in unserem Beispiel nur auf das Unterverzeichnis functional zutrifft.
Allgemein sucht bar/foor nach einem Dateinamen mit den Buchstaben f, o und o. Zusätzlich muss ein Verzeichnis hin zu dieser Datei im Verzeichnisnamen die Buchstaben b, a und r haben.
Mit abc/foo/bar wird ein weiteres Verzeichnis spezifiziert, das der Eingabe entsprechen muss, also die Buchstaben a, b und c im Verzeichnisnamen tragen muss, und so weiter.
Mini-Tutorial fuer FuzzyFinder: TextMate, Teil1
Die Installation wird in einem separaten Blogeintrag diskutiert. Ich gehe davon aus, dass FuzzyFinder:Textmate via \t im Kommandomodus aufgerufen werden kann, wie in der Installation beschrieben.
Gegeben sei folgende, beispielhafte Verzeichnisstruktur im Verzeichnis ~/tmp:
app/models/post.rb app/models/user.rb app/controller/post_contoller.rb app/controller/user_contoller.rb test/functional/user_controller_test.rb test/unit/post_test.rb test/unit/user_test.rb
Man starte vim im Verzeichnis ~/tmp.
Nun moechte man die Datei app/models/user.rb im aktuellen Fenster oeffnen. Dazu startet man FuzzyFinder:TextMate im Kommandomodus mittels \t. Es wird ein Eingabefeld sowie eine Liste aller in der Verzeichnisstruktur vorkommenden Dateien angezeigt.
Tippt man nun das Wort user in das Eingabefeld ein, wird in der Reihenfolge der Eingabe ein entsprechender Dateiname in der Verzeichnisstruktur gesucht, der zunaechst den Buchstaben u enthaelt, dann den Buchstaben s und so weiter. Das Resultat sieht man im folgenden Screenshot:
Mit den Pfeilauf- und Pfeilabtasten kann man die gewünschte Datei selektieren und mit ENTER im aktuellen Fenster oeffnen. Interessant sind auch die folgenden Tastenkombinationen zum Oeffnen einer selektierten Datei:
- STRG+j öffnet die aktuell selektierte Datei horizontal in einem neuen Fenster
- STRG+k öffnet die aktuell selektierte Datei vertikal in einem neuen Fenster
Installation von FuzzyFinder: TextMate
FuzzyFinder: TextMate ist eine Erweiterung von jamis fuer das Fuzzyfinder VIM script. Damit laesst sich die Tastenkombination Cmd+T von TextMate unter Vim nachempfinden.
Vim muss mit Ruby-Unterstuetzung kompiliert sein. Das testet man in vim mit :version. Ruby-Unterstuetzung ist angeschaltet, falls man eine Zeile mit dem Text +ruby findet.
Dies sollte bei den meisten Linux-Distributionen der Fall sein. Unter Mac OS X bietet sich MacVim an.
Ruby-Erweiterung installieren:
$ mkdir -p ~/.vim/ruby $ curl "http://github.com/jamis/fuzzy_file_finder/tree/master%2Flib%2Ffuzzy_file_finder.rb?raw=true" > ~/.vim/ruby/fuzzy_file_finder.rb
Vim-Plugins installieren:
$ mkdir -p ~/.vim/plugin # zuerst FuzzyFinder selbst $ curl "http://www.vim.org/scripts/download_script.php?src_id=9306" > ~/.vim/plugin/fuzzyfinder.vim # anschliessend FuzzyFinder: TextMate $ curl "http://github.com/jamis/fuzzyfinder_textmate/tree/master%2Ffuzzyfinder_textmate.vim?raw=true" > ~/.vim/plugin/fuzzyfinder_textmate.vim
Shortcut einrichten (nur ein Vorschlag!):
echo "map <leader>t :FuzzyFinderTextMate<CR>" >> ~/.vimrc
Weiter geht es mit der Benutzung von FuzzyFinder:TextMate.

