In vim gibt es dieses erstaunliche Plugin namens command-t, mit dem Sie alle Dateien in Ihrem Projekt unscharf durchsuchen können. Wir haben eine ziemlich große Rails-App mit einer Unmenge an Dateien, und es ist in der Lage, es ohne jede Verlangsamung zu bewältigen.
hat ein paar Dinge ausprobiert (wie ffip, command-t von textmate.el und rinari-find-in-project von rinari). Die Benutzeroberfläche ist großartig (I & lt; 3 flex), aber das Problem, das sie alle haben, liegt in einem großen Projekt, die Leistung ist schlecht bis zu dem Punkt, dass sie unbrauchbar ist.
Momentan mache ich mehr Gebrauch von rinaris Navigationsbefehlen und ido-find-file. Zwischen den beiden ist es ein brauchbares Setup, aber es wäre schön, einen verrückten schnellen unscharfen Fund im Projekt zu haben.
Kennt jemand von einem performanteren Skript dann, was ich versucht habe?
Ein Github-Rep für mein Gebräu ist hier: Ссылка
Ich habe ein paar weitere Quellen hinzugefügt, damit "irgendetwas-project-find" ein Ersatz für "C-x b" sein kann. Also die Idee ist, wenn Sie "Cx b" treffen, die Sie gegen vorhandene Puffer vervollständigen, letzte Dateien durch recentf (persönlich hacke ich es, um "session.el" stattdessen zu verwenden, aber es ist ein kleines diff), Dateien im aktuellen Verzeichnis, Dateien in derzeitiges Projekt. Ich finde es ziemlich praktisch.
Ich habe das schon eine Weile benutzt, aber es ist nicht gut getestet, also meldet bitte alle Fehler, die ihr findet.
Hängt davon ab, was Sie mit Fuzzy-Matching meinen. Das meiste Fuzzy-Matching ist von Natur aus langsam, aber einige leichte Pseudo-Fuzzy-Algorithmen sind ziemlich schnell. Im Allgemeinen sind Sie wahrscheinlich besser mit einer regexp Suche und nicht mit einer Fuzzy-Match-Suche.
Wie auch immer, es gibt zwei Teile der Frage:
Eiszapfen kann bei beiden helfen:
>Projekt Definition , Verwaltung usw.
Suche nach einem Projekt oder Teilen davon:
Durchsuchen von Dateiinhalten (und Suchen und Ersetzen)
Probieren Sie Ссылка aus, die GNU Find
oder BSD Find
verwenden, um Dateien zu finden. Nichts kann die Geschwindigkeit von C schlagen!
M-x find-file-in-project-by-selected
ist der einzige Befehl, den Sie verwenden müssen.
Ich habe mit über 50000 Dateien in einem alten Netbook ohne Probleme getestet.
Standardmäßig verwendet das effiziente ivy-mode
den Kandidaten und ido-mode
als Rückfall. Ich habe den Ivy-Modus mit drei Millionen Kandidaten getestet. Jetzt kommt man auf die Idee, dass Emacs Lisp selbst schnell genug ist.
Bei * nix stellt der Kernel den Cache für find
zur Verfügung. Wenn Sie also die Dateien mit derselben Eingabe durchsuchen, ist die Antwort sofort.
Außerdem speichert das ivy-mode
automatisch die letzten Suchergebnisse in der Emacs-Lisp-Variablen ivy-last
, sodass Sie M-x ivy-resume
erhalten können, um die vorherigen Kandidaten zu erhalten, ohne Find
zu belästigen.
Sie können (setq my-cached-result ivy-last)
speichern, um ivy-last
in eine andere Variable zu speichern. Dann können Sie M-x my-ivy-resume
:
Auf diese Weise können Sie die letzten 1000 Ergebnisse speichern und sie erneut verwenden;)
Tags und Links emacs