emacs Datei im Projekt eines großen Projekts finden

8

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?

    
Matt Briggs 01.11.2011, 17:45
quelle

5 Antworten

2

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.

    
event_jr 06.11.2011, 05:01
quelle
2

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:

  • Definieren eines Projekts als eine bestimmte Menge von Dateien und Verzeichnissen.
  • Durchsuchen der Projektdateien & amp; Verzeichnisse - alle oder einige

Eiszapfen kann bei beiden helfen:

>
Drew 02.11.2011 04:35
quelle
2

Sie können gpicker ausprobieren. Wenn Sie -t guess übergeben, wird versucht, relevante Dateien über das scm-Backend wie git herauszufinden.

Ich verwende folgendes Snippet, um die Datei im Projekt zu finden, wobei der Projektstamm durch eproject bestimmt wird.

%Vor%     
Ian Yang 05.01.2012 01:08
quelle
1

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 :

%Vor%

Auf diese Weise können Sie die letzten 1000 Ergebnisse speichern und sie erneut verwenden;)

    
chen bin 07.05.2015 11:18
quelle
0

Sie möchten wahrscheinlich IdUtils , sind aber nicht mit all den anderen Technologien vertraut, die Sie erwähnen Ich kann mir nicht sicher sein.

    
ypb 02.11.2011 05:13
quelle

Tags und Links