Ich bemühe mich sehr, vim zu lernen, nachdem ich TextMate in den letzten Jahren verwendet habe.
Ich habe begonnen, einen Teil der In-File-Navigation in den Speicher zu übertragen, habe jedoch Probleme beim Navigieren zwischen mehreren Dateien.
In meinem Workflow ist es ziemlich üblich, dass ich ziemlich regelmäßig zwischen einer Handvoll Dateien wechsle (genug Dateien, so dass Fenster im geteilten Bereich zu klein werden).
Ich verwende derzeit NERDTree, finde es jedoch mühsam, Drilldowns in Verzeichnisse durchzuführen, und verwende ständig CTRL+ W h/ CTRL+, W lum hin und her zu springen .
Ich denke, ich würde es besser mit Registerkarten machen, zwischen denen ich leicht wechseln kann, aber vielleicht muss ich einen anderen Workflow verwenden.
Ich möchte auch eine Verknüpfung "Gehe zu Datei ..." wie CMD+ Tin TextMate. Ich habe festgestellt, fuzzy_file_finder
aber es erfordert, dass vim mit Ruby-Bindungen erstellt wird, was bei den nativen Installationen, an denen ich gearbeitet habe, nicht der Fall ist.
Während ich könnte den Hauptgrund Wiederaufbau ich vim wechseln will , ist so ich eine Editor Umwelt haben kann , dass ich leicht Arbeit über jede Plattform kennen.
Die Möglichkeiten da draußen sind überwältigend. Ideen werden sehr geschätzt!
quelle
Antworten:
Ich finde es nicht so
:e
umständlich , in Unterverzeichnisse über einfach alt zu bohren, wenn man eine anständige Konfiguration für die Tab-Vervollständigung bedenkt.Sehen Sie sich die
'wildmenu'
Option an, mit der Vim eine Liste der Vervollständigungen (Dateinamen) in der Modeline über der Befehlszeile anzeigt. Sie können die'wildmode'
Option ändern , um die Art der Tab-Vervollständigung, die Vim ausführt, weiter zu konfigurieren.Persönlich benutze ich
:set wildmode=full
.Mein Workflow sieht folgendermaßen aus:
:cd
in das oberste Verzeichnis meines Projekts.So öffnen Sie eine Datei
foo/bar/baz
:Einfachstes Szenario: Typ
:e f<tab>b<tab>b<tab><enter>
.Wenn es mehr als eine Datei mit Start
b
in einem dieser Verzeichnisse , die Sie vielleicht ein zu tun haben,<left>
oder<right>
oder eine andere<tab>
auf der Tastatur zwischen ihnen zu springen (oder ein paar mehr Buchstaben eindeutig zu machen geben).Im schlimmsten Fall gibt es Dateien und Verzeichnisse, die einen gemeinsamen Namen haben, und Sie müssen einen Drilldown in das Verzeichnis durchführen. In diesem Fall vervollständigen Sie den Verzeichnisnamen auf der Registerkarte und geben Sie ihn ein,
*<tab>
um einen Drilldown durchzuführen.:e
eine neue Datei im selben Fenster.:b <tab>
diese Option, um Puffer zu durchlaufen, die bereits im Hintergrund geöffnet sind. Wenn Sie eingeben:b foo<tab>
, wird es nur mit aktuell geöffneten Dateien übereinstimmen, die übereinstimmenfoo
.Ich verwende diese Zuordnungen auch, um das Öffnen neuer Fenster und das Wechseln zwischen ihnen zu erleichtern, da ich dies so oft mache.
Ich brauche nur wenige Sekunden, um Vim zu öffnen, einige Fenster einzurichten und einige Dateien darin zu öffnen. Persönlich habe ich keines der Dateisuch-Skripte von Drittanbietern als sehr nützlich empfunden.
quelle
Eine einfache Möglichkeit zum Durchsuchen des Dateisystems ist der folgende Befehl:
Ich mache das nicht nach :)
quelle
:Vex
wenn Sie den Bildschirm vertikal statt horizontal:Vex
praktischer, habe aber:Sex
gerade meinen Tag gemacht.:Se
funktioniert auch für den Datensatz (das gleiche gilt für dieVe, Te
Varianten). Keine Notwendigkeit, es komisch zu machen :):Sex
,:Vex
,:Tex
Und:Ex
sind nützliche Befehle für ex (ploring) , um die Dateien auf Ihrem System , wenn Sie etwas anderes verwenden möchten aus:e
(wo
S/V/T
stehen für Split / Vertical / Tab)quelle
Wenn Sie sie noch nicht gefunden haben, sollten Sie Folgendes überprüfen:
Denken Sie auch daran, dass Sie wichtige Verknüpfungen in Ihrer .vimrc neu zuordnen können, um sie weniger umständlich zu machen. Ich benutze oft geteilte Fenster; Ich habe festgestellt, dass Folgendes den Umgang mit ihnen erheblich erleichtert:
quelle
Ich finde LustyExplorer bisher am besten.
Sie können eine Datei öffnen, indem Sie nur einen Teil ihres Namens eingeben.
Sie können eine Datei aus dem Verzeichnis der aktuellen Datei oder der aktuellen Datei
pwd
oder aus der Pufferliste öffnen .Wenn Sie eine Datei aus der Pufferliste öffnen, müssen Sie nicht durch den Verzeichnisbaum navigieren, obwohl Sie für die beiden anderen Modi leider immer noch durch den Baum navigieren müssen. Das Gute ist, dass Sie nicht mit dem ersten Charakter beginnen müssen.
Wenn Sie haben:
und Sie möchten öffnen
dir_b/file.html
, können Sie es im Allgemeinen durch Eingabe findenb<Tab>h
quelle
Kennen Sie die Registerkarten von Vim? Ich bin mir nicht sicher, ob Sie sich dort auf Vims eigene Registerkarten beziehen oder nach TextMates suchen. Es ist unklar, welche Vim-Version Sie verwenden, aber es gibt seit mindestens 7.0 Registerkarten (die in letzter Zeit überall installiert zu sein scheinen), und sie sind fantastisch.
:tabe
Öffnet eine neue (kurz für "Tab-Bearbeitung", z. B.:tabe
zum Leeren oder:tabe path/to/file
zum Öffnen einer Datei in einer neuen Registerkarte). Sie können mitgt
/ zwischen benachbarten Registerkarten wechselngT
, und es gibt auch eine Reihe anderer tab-bezogener Navigationsbefehle Sie könnten von Vim (:help tabs
) erwartenMein Workflow für große Projekte umfasst in der Regel mehrere Registerkarten mit jeweils 1 bis 3 Fenstern, je nachdem, welchen Kontext ich benötige. Dies funktioniert sogar noch besser, wenn ich ein doppelt breites Terminalfenster habe, mit dem ich vertikal teilen kann
:vs
, sodass mir auf einer einzelnen Registerkarte problemlos 4 Dateien gleichzeitig angezeigt werden können , für die jeweils viel Platz vorhanden ist.Letzter Tipp: Ich verwende manchmal den Befehl "switch buffer" (
:sb <partial_buf_name>
), der dem Fuzzy-Finding von TM irgendwie ähnelt, da er ziemlich gut funktioniert, aber nur für bereits geöffnete Puffer. Immer noch großartig, wenn ich ein Dutzend oder mehr Dateien gleichzeitig geöffnet habe. (:set switchbuf=usetab
Hinweis: Ich musste in meinem vimrc arbeiten, damit dies über Registerkarten hinweg funktioniert, aber sobald dies festgelegt ist, ist es großartig.)quelle
vim-titlecase
Schrauben mit dem GT / GT - Mappings, aber es gibt eine Behelfslösung .Es ist überraschend zu sehen, dass der
:find
Befehl in keiner der Antworten erwähnt wurde. Normalerweise arbeite ich mit Rails-Projekten, bei denen ich tief in die Verzeichnishierarchie vordringen muss. Also für eine Dateiapplication.css
, die sich inapp/assets/stylesheets/
allem befindet, was ich eingeben muss, ist:find applica
und dann die Tabulatortaste drücken, um sie automatisch zu vervollständigen, und die Eingabetaste , um sie zu öffnen.quelle
Schauen Sie sich das Plugin ctrlp als Alternative zum Plugin Command-T an . Es ist insofern besser, als es ein 'natives' Vim-Skript ist und Vim nicht mit Ruby (oder anderer Unterstützung) kompiliert werden muss, während es sehr schnell und unauffällig läuft.
quelle
Wenn die gewünschte Datei bereits in einen Puffer geladen ist (was wahrscheinlich ist, wenn Sie regelmäßig zwischen einer Handvoll Dateien wechseln), können Sie mit dem
:b[uffer]
Befehl schnell zum Puffer wechseln .:b
Sie können entweder eine Puffernummer als Parameter oder (nützlicher) eine Zeichenfolge verwenden, die einem Teil des Pfads / Dateinamens entspricht. Wenn mehrere Übereinstimmungen vorhanden sind, können Sie diese mithilfe der Registerkarte durchlaufen.Wenn Sie das Fenster teilen und den Puffer im neuen Fenster öffnen möchten, verwenden Sie
:sb name
Wenn Sie den Puffer in einer neuen Registerkarte öffnen möchten, verwenden Sie
:tab b name
Sie können den
:ls
Befehl auch verwenden , um eine Liste der aktuell geladenen Puffer anzuzeigen.quelle
Ich benutze diese Funktion, um Dateien in Unterverzeichnissen zu finden, habe sie aber nicht geschrieben. Es ist aus dem Vim-Wiki :
Eine Sache, die ich mag, ist, dass es Platzhalter unterstützt (*). Es ist auch gut für mehrere Spiele benommen.
quelle
Zusätzlich zu den
wildmenu
Antworten verwende ich das BufExplorer- Plugin und die folgenden Zuordnungen, um Puffer schnell zu überspringen :Oder Sie können einfach den Puffer-Explorer durch den
:ls
Befehl ersetzen , der im Grunde dasselbe anzeigt.Der letzte ordnet
Alt-=
den Puffer-Explorer zu.Ich benutze Windows nicht so oft, da ich normalerweise nur ein oder zwei Fenster habe.
Ich habe das auch so geändert
statusline
, dass es die Puffernummer enthält%2n
, sodass ich immer weiß, welcher Puffer bearbeitet wird. Sehen:h statusline
quelle
Kennen Sie die MacVim-Anwendung? Es ist VIM-poliert für OS X und eine seiner Funktionen ist die Unterstützung von Registerkarten (CMD + T zum Öffnen neuer Registerkarten), Schubladen usw. (lesen Sie dies: http://zerokspot.com/weblog/2008 / 08/03 / macvim-as-textmate-ersatz / )
Versuch es!
Grüße Michal
quelle
NerdTree eignet sich am besten für die Dateinavigation in vim.
Der Link unten ist eine gute Einführung in Nerdtree.
http://www.catonmat.net/blog/vim-plugins-nerdtree-vim/
quelle
Hier ist etwas ziemlich Triviales, das ich in meinem stecke
.vimrc
. Es wird eine Datei aus einem beliebigen Unterverzeichnis geladen.Also kann ich einfach sagen:
: Er Main.java
und es wird Unterverzeichnisse durchsuchen, finden
Main.java
und laden. Es verhält sich nicht gut für mehrere Dateien mit demselben Namen, aber es ist schnell und einfach.Das andere Tool, das ich verwende, ist VTreeExplorer , das ein baumbasiertes Fenster mit Dateien / Verzeichnissen bereitstellt und keine speziellen Build-Optionen von VIM erfordert (dh es ist ein Vanilla-Plugin).
quelle
models.py
,views.py
etc.Mein Workflow zum Suchen von Dateien ist das Wildmenü, autocwd und
:e
.Relevante Teile in der
.vimrc
:Und wie man es benutzt:
Das gibt alle Dateien im aktuellen Verzeichnis, die mit myf beginnen. Sie können auch
<Tab>
durch sie. Verwenden Sie zum Öffnen return :)^D
wird Ihnen immer alle Übereinstimmungen geben. Da autocmd immer in den Ordner der aktuellen Datei wechselt, ist es einfach, damit zu arbeiten. Wenn du drin bistfoo/bar.py
und zu dir gehenfoo/baz.py
willst, tu es nur:e baz.py
und du bist da. Das funktioniert auch mit Puffern (:b foo^D
listet alle Puffer auf, die mit foo beginnen)quelle