it-swarm.com.de

Verknüpfung zum Öffnen einer Datei in Vim

Ich möchte eine Datei in Vim wie in Eclipse mit öffnen Ctrl + Shift + R, oder über die Ctrl + N Option der automatischen Ausfüllung. 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:

:tabe <filepath>
:new <filepath>
:edit <filepath>

Das Problem hierbei ist, dass ich in diesen Fällen den gesamten Dateipfad angeben muss.

122
Techmaddy

Ich habe mich kürzlich in fuzzyfinder.vim ... verliebt :-)

: Mit FuzzyFinderFile können Sie Dateien öffnen, indem Sie Teilnamen oder Muster eingeben.

59
f3lix

Was ich normalerweise mache, ist e . (e-space-dot), das mir ein durchsuchbares aktuelles Verzeichnis gibt - dann kann ich / - Suche nach Namensfragmenten, genau wie das Finden eines Wortes in einer Textdatei. Ich finde das im Allgemeinen gut genug, einfach und schnell.

140
dkretz

:find ist eine weitere Option.

Ich öffne vim aus dem Stammverzeichnis meines Projekts und habe das path dort eingestellt.

Dann kann ich Dateien öffnen, die sich an einer beliebigen Stelle im Baum befinden:

:find **/filena< tab >

Tab wird automatisch durch verschiedene Übereinstimmungen vervollständigt. (** weist es an, den Pfad rekursiv zu durchsuchen).

33
mattwarren

Sie können nach einer Datei im aktuellen Pfad suchen, indem Sie **:

:tabe **/header.h

Klicken Sie auf die Registerkarte, um verschiedene Abschlüsse anzuzeigen, wenn mehrere Übereinstimmungen vorliegen.

25
strager

Erwägen Sie die Verwendung des CtrlP Plug-Ins.

Es ist in Janus Distributive enthalten.

Ermöglicht das Auffinden von Dateien im aktuellen Verzeichnis, das Öffnen von Puffern oder zuletzt verwendete Dateien mithilfe von "Fuzzy Matching" oder regulären Ausdrücken.

15
Alexey

es sei denn, mir fehlt etwas: Der Dateiname ist der schnellste Weg, den ich gefunden habe.

Mit der Registerkarte können Sie auch den Dateinamen automatisch vervollständigen.

12
Ian P

Ich mag die: FuzzyFinderTextMate (oder Ctrl + F) auf meinem Setup. Siehe http://weblog.jamisbuck.org/2008/10/10/coming-home-to-vim

10
alex2k8

Ich verwende ein paar Verknüpfungen in meiner .vimrc-Datei (genaue Syntax siehe unten).

Sie basieren auf der Tatsache, dass ich in 90% der Fälle eine andere Datei im selben Verzeichnis wie die Datei öffnen möchte, die ich gerade bearbeite, oder in einem Verzeichnis, das in der Hierarchie der bearbeiteten Datei sehr ähnlich ist.

Hier ist was die Befehle tun:

,cd: Ändern Sie das aktuelle Arbeitsverzeichnis in das Verzeichnis, in dem sich die aktuell bearbeitete Datei befindet.

,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:

map ,e :e <C-R>=expand("%:p:h") . "/" <CR>

map ,cd :cd %:p:h <CR>

Hier ist eine Abfolge von Ereignissen:


  1. Sie bearbeiten eine Datei namens test.Java in "/ home/prog"
  2. ,cd -> Das aktuelle Arbeitsverzeichnis wird jetzt "/ home/prog"
  3. ,e -> Wird zu ": e/home/prog" erweitert, sodass Sie einfach den Dateinamen eingeben können, z. B. test.h.

  1. ,e -> Erweitert um ": e/home"
  2. tab -> Durch Unterverzeichnisse von/home blättern
  3. enter -> cd in das Verzeichnis, in das Sie sagen möchten/home/prog
  4. ,e -> Erweitert um ": e/home/prog"
9

Es gibt auch Command-T, von dem ich finde, dass es das Beste ist (und ich habe sie alle ausprobiert). Es ist ein kleiner Aufwand, es zu installieren, aber sobald es installiert ist, ist es ein Traum, es zu benutzen.

https://wincent.com/products/command-t/

8
bronson

Verwenden Sie Tabulatoren, sie funktionieren bei der Eingabe von Dateipfaden im VIM-Escape-Modus!

6
dirkgently

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 innerhalb von vim mit ": tag ShowList" öffnen ".

4
Paul Tomblin

Dies ist nicht gena das, wonach Sie suchen, aber es ist in vielen Fällen gut (wenn auch nicht alles).

Wenn Sie VIM öffnen und sich ein Dateiname im Puffer befindet, können Sie den Cursor auf diesen Dateinamen setzen und eingeben gf. Dadurch wird die Datei geöffnet, deren Name sich unter dem Cursor im selben Puffer befindet. Es ist das gleiche wie

:e CTRL+rCTRL+w

4
Nathan Fellman

Wenn Sie Dateien in einem gemeinsamen Verzeichnis bearbeiten, können Sie :cd in dieses Verzeichnis und dann :e nur auf den Dateinamen.

Zum Beispiel anstatt:

:e /big/long/path/that/takes/a/while/to/type/or/tab/complete/thingy.rb
:sp /big/long/path/that/takes/a/while/to/type/or/tab/complete/other_thingy.c
:vs /big/long/path/that/takes/a/while/to/type/or/tab/complete/one_more_thingy.Java

Du kannst tun:

:cd /big/long/path/that/takes/a/while/to/type/or/tab/complete/
:e thingy.rb
:sp other_thingy.c
:vs one_more_thingy.Java

Oder, wenn Sie bereits eine Datei im gewünschten Verzeichnis geöffnet haben, können Sie das % Abkürzung für den aktuellen Dateinamen, und kürzen Sie ihn in das aktuelle Verzeichnis mit dem :h Modifikator (:help :_%:):

:e /big/long/path/that/takes/a/while/to/type/or/tab/complete/thingy.rb
:cd %:h
:sp other_thingy.c
:vs one_more_thingy.Java

Und wie andere gesagt haben, können Sie Dateinamen in der Ex-Zeile mit einem Tab vervollständigen (siehe :help cmdline-completion für mehr).

4
rampion

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 von &path Vim Option):

In letzter Zeit habe ich ein anderes Plugin mit einer ähnlichen Funktion gesehen, aber ich erinnere mich nicht an den Namen.

Bald wird: find wahrscheinlich die automatische Vervollständigung unterstützen - Patches zu diesem Thema werden derzeit auf der Mailingliste vim_dev veröffentlicht.

3
Luc Hermitte
  • du kannst (set wildmenu)
  • sie können die Registerkarte verwenden, um Dateinamen automatisch zu vervollständigen
  • sie können auch Matching verwenden, zum Beispiel: e p*.dat oder so ähnlich (wie in alten 'dos)
  • sie könnten auch: Durchsuchen Bestätigen Sie e (für ein grafisches Fenster)

  • aber du solltest wahrscheinlich auch angeben, welche vim-version du verwendest und wie das ding in emacs funktioniert. Vielleicht finden wir für Sie eine passende Alternative.

1
Rook

FuzzyFinder wurde erwähnt, aber ich liebe das textmate-ähnliche Verhalten des FuzzyFinderTextmate -Plugins, das das Verhalten auf alle Subdirs erweitert.

Stellen Sie sicher, dass Sie Version 2.16 von fuzzyfinder.vim verwenden. - Die höheren Versionen bringen das Plugin zum Erliegen.

1
Naseer

Mit Exuberant-Tags können Sie Tag-Dateien mit Dateiinformationen erstellen:

ctags --extra=+f -R *

Öffnen Sie dann die Datei von VIM mit

:tag filename

Sie können auch <tab>, um den Dateinamen automatisch zu vervollständigen.

0
Wonil

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 versuche, besteht darin, alle Dateien zu öffnen, die ich wahrscheinlich zu Beginn der Editiersitzung benötige. Öffnen Sie z. B. alle Dateien in Schlüsselverzeichnissen ...

:args app/**
:args config/**
:args test/**
etc...

(Das heißt, ich hätte möglicherweise Dutzende von Dateien geöffnet, aber bisher scheint es noch in Ordnung zu funktionieren.)

Danach kann ich FuzzyFinder im Puffermodus verwenden und es wird sich wie die Verknüpfung command-o Von TextMate verhalten ...

:FuzzyFinderBuffer
0
Ethan

In GVIM kann die Datei mithilfe des Dialogfelds Öffnen/Lesen/Schreiben durchsucht werden.

:browse {command}

{Befehl} - Öffnen/Lesen/Schreiben

öffnen - Öffnet die Datei lesen - Hängt die Datei an schreiben - Dialog Speichern unter

0
Samantha