Ich möchte eine Datei in Vim wie in Eclipse mit Ctrl+ Shift+ Roder über die Option Ctrl+ Nzum automatischen Ausfüllen öffnen. Rufen Sie eine Tastenkombination auf, geben Sie den Dateinamen / das Muster ein und wählen Sie aus allen übereinstimmenden Dateinamen aus.
Ich weiß, wie man es normalerweise öffnet wie:
:tabe <filepath>
:new <filepath>
:edit <filepath>
Das Problem hierbei ist, dass ich in diesen Fällen den gesamten Dateipfad angeben muss.
vim
keyboard-shortcuts
Techmaddy
quelle
quelle
:tabe
wird die Datei in einer neuen Registerkarte geöffnet,:new
das Fenster wird horizontal geteilt und:edit
die aktuelle Datei wird geschlossen, bevor die neue geöffnet wird.Antworten:
Ich habe mich kürzlich in fuzzyfinder.vim verliebt ... :-)
: Mit FuzzyFinderFile können Sie Dateien öffnen, indem Sie Teilnamen oder Muster eingeben.
quelle
Was ich normalerweise mache, ist
e .
(e-space-dot), das mir ein durchsuchbares aktuelles Verzeichnis gibt - dann kann ich/
- nach Namensfragmenten suchen, genau wie das Finden eines Wortes in einer Textdatei. Ich finde das im Allgemeinen gut genug, einfach und schnell.quelle
:e.
).:e.
und:E
obwohl: Wenn die aktuelle Datei bearbeitet und noch nicht gespeichert wurde, beschwert sich die erstere (wie:edit
) wegen "kein Schreiben seit der letzten Änderung", während die letztere das Fenster horizontal aufteilt (wie):new
), um das Öffnen einer neuen Datei zu ermöglichen (während beide die aktuelle Datei durch die neue Datei ersetzen, wenn sie nicht geändert wurde (wie:edit
)).:find
ist eine andere Option.Ich öffne vim von der Wurzel meines Projekts und habe das
path
Set dort.Dann kann ich Dateien öffnen, die sich an einer beliebigen Stelle im Baum befinden, indem ich:
Die Registerkarte wird durch verschiedene Übereinstimmungen automatisch vervollständigt. (
**
weist es an, rekursiv durch den Pfad zu suchen).quelle
:find
seitdem nicht nützlich , den Pfad relativ zum Arbeitsverzeichnis zu erhalten. Die Frage und die Antwort von @romainl finden Sie hier: stackoverflow.com/questions/28224168/… . Ich finde eine interessantere @ strager-Antwort, um den Pfad relativ zum Arbeitsverzeichnis einfacher zu finden.Sie können im aktuellen Pfad nach einer Datei suchen, indem Sie Folgendes verwenden
**
:Klicken Sie auf die Registerkarte, um verschiedene Abschlüsse anzuzeigen, wenn mehr als eine Übereinstimmung vorliegt.
quelle
:tabe **/*der.h
wenn Sie sich nicht an den vollständigen Namen der Datei erinnern.Erwägen Sie die Verwendung des CtrlP- Plug- Ins .
Es ist in Janus Distributive enthalten .
Ermöglicht das Suchen von Dateien im aktuellen Verzeichnis, das Öffnen von Puffern oder zuletzt verwendeten Dateien mithilfe von "Fuzzy Matching" oder regulären Ausdrücken.
quelle
es sei denn, ich vermisse etwas: Der Dateiname ist der schnellste Weg, den ich gefunden habe.
Auf der Registerkarte können Sie auch den Dateinamen automatisch vervollständigen.
quelle
Ich mag das: FuzzyFinderTextMate (oder Ctrl+ F) in meinem Setup. Siehe http://weblog.jamisbuck.org/2008/10/10/coming-home-to-vim
quelle
Ich verwende einige Verknüpfungen in meiner .vimrc-Datei (genaue Syntax unten).
Sie basieren auf der Tatsache, dass ich in 90% der Fälle eine andere Datei im selben Verzeichnis wie die Datei, die ich gerade bearbeite, oder in einem Verzeichnis öffnen möchte, das in der Hierarchie dieser bearbeiteten Datei sehr nahe liegt.
Die Befehle bewirken Folgendes:
,cd
: Ändern Sie das aktuelle Arbeitsverzeichnis in das Verzeichnis, in dem sich die aktuelle Datei befindet, die Sie bearbeiten.,e
: Öffnet eine Datei, in der das aktuelle Arbeitsverzeichnis bereits ausgefüllt ist, sodass Sie nur den Dateinamen angeben müssen .Fügen Sie diese in Ihre .vimrc ein:
Hier ist eine Abfolge von Ereignissen:
,cd
-> Das aktuelle Arbeitsverzeichnis wird jetzt zu "/ home / prog".,e
-> Erweitert auf ": e / home / prog", sodass Sie einfach den Dateinamen eingeben können, z. B. test.h.,e
-> Erweitert auf ": e / home"tab
-> Durch Unterverzeichnisse von / home blätternenter
->cd
zu dem Verzeichnis, das Sie sagen möchten / home / prog,e
-> Erweitert auf ": e / home / prog"quelle
Es gibt auch Command-T, das ich als das Beste aus dem Haufen finde (und ich habe sie alle ausprobiert). Die Installation ist ein kleiner Aufwand, aber sobald es installiert ist, ist es ein Traum, es zu verwenden.
https://wincent.com/products/command-t/
quelle
Verwenden Sie Registerkarten, sie funktionieren bei der Eingabe von Dateipfaden im vim-Escape-Modus!
quelle
Wenn Sie Tags haben (und sollten), können Sie eine Datei über die Befehlszeile nur mit dem Namen der Klasse oder Methode oder c-Funktion mit "vim -t DBPlaylist" und in vim mit ": tag ShowList" öffnen ".
quelle
Wenn Sie Dateien in einem gemeinsamen Verzeichnis bearbeiten, können Sie
:cd
in dieses Verzeichnis wechseln und dann verwenden:e
wechseln nur den Dateinamen verwenden.Zum Beispiel anstatt:
Du kannst tun:
Wenn Sie bereits eine Datei im gewünschten Verzeichnis geöffnet haben, können Sie die
%
Kurzform für den aktuellen Dateinamen verwenden und sie mit dem:h
Modifikator (:help :_%:
) auf das aktuelle Verzeichnis zuschneiden :Und wie andere gesagt haben, können Sie Dateinamen in der Ex-Zeile mit Registerkarten vervollständigen (siehe
:help cmdline-completion
mehr).quelle
Das ist nicht genau das wonach Sie suchen, aber es ist in vielen Fällen gut (wenn auch nicht in allen).
Wenn Sie VIM öffnen und sich der Name einer Datei im Puffer befindet, können Sie den Cursor auf diesen Dateinamen setzen und diesen eingeben gf. Dies öffnet die Datei, deren Name sich unter dem Cursor im selben Puffer befindet. Es ist das gleiche wie
:e CTRL+r CTRL+w
quelle
:b oldname
Ich kenne drei Plugins, die das Öffnen von Dateien ermöglichen, die automatische Vervollständigung unterstützen und nicht den vollständigen Pfadnamen der zu öffnenden Datei (en) eingeben müssen (solange sich die Dateien unter einem der Verzeichnisse der
&path
vim-Option befinden). :::e
/:find
, sondern bei geteilten Aktionen)In letzter Zeit habe ich ein anderes Plugin mit einer ähnlichen Funktion gesehen, aber ich erinnere mich nicht an den Namen.
Bald: find unterstützt wahrscheinlich die automatische Vervollständigung - Patches zu diesem Thema werden derzeit auf der Mailingliste vim_dev veröffentlicht.
quelle
p*.dat
oder so ähnlich (wie in alten Dos)Sie können auch: Durchsuchen bestätigen bestätigen (für ein grafisches Fenster)
Sie sollten aber wahrscheinlich auch angeben, welche VIM-Version Sie verwenden und wie das in Emacs funktioniert. Vielleicht finden wir für Sie eine genaue Alternative.
quelle
FuzzyFinder wurde erwähnt, aber ich liebe das textmate-ähnliche Verhalten des FuzzyFinderTextmate Plugins, das das Verhalten auf alle Unterverzeichnisse erweitert.
Stellen Sie sicher, dass Sie Version 2.16 von fuzzyfinder.vim verwenden. - Die höheren Versionen brechen das Plugin.
quelle
Mit Exuberant ctags können Sie Tag-Dateien mit Dateiinformationen erstellen:
Öffnen Sie dann die Datei von VIM mit
Sie können auch
<tab>
den Dateinamen automatisch vervollständigen.quelle
In GVIM kann die Datei über den Dialog zum Öffnen / Lesen / Schreiben durchsucht werden.
{Befehl} - Öffnen / Lesen / Schreiben
Öffnen - Öffnet das Lesen der Datei - Hängt das Schreiben der Datei an - Speichern unter
quelle
Ich habe FuzzyFinder installiert. Die Einschränkung besteht jedoch darin, dass nur Dateien im aktuellen Verzeichnis gefunden werden. Eine Problemumgehung besteht darin, FuzzyFinderTextmate hinzuzufügen. Basierend auf den Dokumenten und Kommentaren funktioniert dies jedoch nicht zuverlässig. Sie benötigen die richtige Version von FuzzyFinder und Ihre Kopie von Vim muss mit Ruby-Unterstützung kompiliert werden.
Eine andere Problemumgehung, die ich jetzt ausprobiere, besteht darin, alle Dateien zu öffnen, die ich wahrscheinlich zu Beginn der Bearbeitungssitzung benötige. Öffnen Sie beispielsweise alle Dateien in Schlüsselverzeichnissen ...
(Dies bedeutet, dass möglicherweise mehrere Dateien geöffnet sind, aber bisher scheint es immer noch in Ordnung zu sein.)
Danach kann ich FuzzyFinder im Puffermodus verwenden und es wird sich ähnlich wie die
command-o
Verknüpfung von TextMate verhalten ...quelle