Gibt es eine Möglichkeit, mit VIM eine inkrementelle Suche in Textdateien durchzuführen?
Vim führt bereits eine inkrementelle Suche innerhalb der aktuell geöffneten Datei durch.
Beispiele für Programme, die die Art der Suche veranschaulichen, die ich versuche durchzuführen, sind Notationale Geschwindigkeitfür MacOS,Resopfür Fenster oderSimpleNotefür das Web.
Diese Apps führen eine sofortige oder inkrementelle Suche in den Dateien eines bestimmten Verzeichnisses durch und ermöglichen eine einfache/schnelle Eingrenzung der gesuchten Datei oder das Erstellen einer neuen Datei.
Ich verwende beide, würde aber lieber in einem Editor leben (und zwar VIM).
Gibt es ein Plug-In, das dies ermöglicht?
Antwort1
Sie können vimgrep
beispielsweise den folgenden Befehl verwenden:
:vimgrep /searchword/ ~/**
Sehen
:help vimgrep
für Details.
Antwort2
Noch nicht. Um eine gute inkrementelle Suchleistung zu erzielen, müsste wahrscheinlich jemand ein Plugin in C schreiben, das Dateien in eine große, optimierte Datenstruktur lädt. Es gibt vielleicht eine Möglichkeit, Vim so zu hacken, dass bei jedem Tastendruck grep über die gesamte Datenbank ausgeführt wird, aber das wäre wahrscheinlich nicht schnell genug.
Ein Beispiel für ein Open-Source-Vim-Plugin, das eine inkrementelle Suche durchführt (leider nach Dateinamen, nicht nach Dateiinhalten), ist das Command-t-Plugin:
https://wincent.com/products/command-t
Eine weitere technische Einschränkung, auf die man stoßen kann, wenn man versucht, eine ganze Datenbank mit Notizen in Vim-Puffer zu laden, besteht darin, dass jeder Benutzer standardmäßig auf 1024 gleichzeitig geöffnete Dateien beschränkt ist und viele Notizdatenbanken mehr Notizen enthalten. Die Beschränkung kann relativ einfach aufgehoben werden, aber Benutzer sollten sich mit solchen Dingen nicht herumschlagen müssen.
Antwort3
Es gibt ein nettes Plugin, das genau das macht, allerdings mit Puffern:LustyExplorer.
Es gibt auch andere Plugins, die fast das Gleiche mit Dateien machen:EasyGrepUndBestätigungdie inkrementelle Suche funktioniert jedoch nicht.
Die erste (und andere sowie NV- oder Resoph Notes) können inkrementelle Suchen durchführen, da sich alle Dateien im Speicher befinden und wie eine Art Datenbank funktionieren. Bei zufälligen Dateien scheint die Implementierung etwas schwieriger zu sein.
Ich würde eine solche Funktion wirklich gerne in Vim sehen, da ich gerade komplett auf Linux umgestiegen bin und es meines Wissens keinen Ersatz für Notational Velocity gibt. NV war ein zentraler Teil meines Workflows unter Mac OS X und es ist im Moment tatsächlich das einzige fehlende Teil. Drew Wagners Erklärung des Problems und sein Lösungsvorschlag scheinen interessant.