Dateiname unter dem Cursor wie gf öffnen, aber in einem neuen Tab (oder geteilt)?

43

Der Befehl gffür den normalen Modus wechselt zu einer Datei mit dem Pfad, auf dem sich der Cursor gerade befindet.

Dies geschieht jedoch im aktuellen Fenster und ersetzt den aktuellen Text. Das bedeutet, dass Sie explizit zurück navigieren müssen, um später zurück zu gelangen, und dass Sie möglicherweise Änderungen in den aktuellen Puffer schreiben müssen.

Ich bin sicher, dass es möglich ist, die Datei unter dem Cursor in einer neuen Tab-Ansicht zu öffnen.

Volker Siegel
quelle
3
Wenn Sie die 'hidden'Option ( set hidden) aktivieren, können Sie von nicht gespeicherten Puffern weg navigieren. Für mich war dies eine enorme Produktivitätssteigerung, und es war wichtig, dass ich mich nicht mehr so ​​sehr auf Splits und Tabs verlassen musste.
bis

Antworten:

56

BEARBEITEN: Schlagen Sie schön symmetrische Zuordnungen für den Fall der vertikalen Aufteilung vor, da Vim standardmäßig zwei Zuordnungen für den Fall der horizontalen Aufteilung hat.

Es gibt verschiedene Möglichkeiten, die "Datei unter dem Cursor" gfzu bearbeiten. Sie können sie zwar neu zuordnen , um sie auf einer neuen Registerkarte zu bearbeiten, wie @ alexander-myshov es erwähnt. Sie haben jedoch zwei Möglichkeiten, sie auf einer neuen Registerkarte zu bearbeiten Bearbeiten Sie es im aktuellen Fenster, was Sie manchmal auch tun möchten. Es ist nicht schwer, die Standardzuordnungen zu verwenden, aber wenn Sie eine davon neu zuordnen möchten, würde gfich vorschlagen , die Zuordnungen zu ändern , damit Sie keine verlieren.

Es gibt einige Möglichkeiten, einen Dateinamen unter dem Cursor zu bearbeiten

  • gf - Bearbeiten Sie die vorhandene Datei unter dem Cursor im selben Fenster
  • C-Wf - Bestehende Datei unter dem Cursor im geteilten Fenster bearbeiten
  • C-WC-F - Bestehende Datei unter dem Cursor im geteilten Fenster bearbeiten
  • C-Wgf - Bestehende Datei unter Cursor auf neuer Registerkarte bearbeiten

Es gibt keine Standardzuordnung zum Bearbeiten einer vorhandenen Datei unter dem Cursor in vertikaler Aufteilung. Sie können dies jedoch erreichen, indem Sie zuerst das Fenster vertikal aufteilen und dann die Datei unter dem Cursor im aktuellen Fenster bearbeiten.

  • C-Wv+ gf- Bestehende Datei unter dem Cursor im vertikal geteilten Fenster bearbeiten

Wie Sie oben sehen können, gibt es zwei Standardzuordnungen zum Bearbeiten von Dateien unter dem Cursor in einer horizontalen Aufteilung. Sie können daher eine davon dem obigen Schlüsselring neu zuordnen und die Kartengruppe so erweitern, dass sie auch den Fall der vertikalen Aufteilung abdeckt. Sie können alles binden, natürlich, aber dies scheint die Symmetrie zu vervollständigen schön: nnoremap <C-W><C-F> <C-W>vgf. Jetzt hast du

  • gf - Bearbeiten Sie die vorhandene Datei unter dem Cursor im selben Fenster
  • C-Wf - Bestehende Datei unter dem Cursor im geteilten Fenster bearbeiten
  • C-WC-F - Bestehende Datei unter dem Cursor im vertikal geteilten Fenster bearbeiten
  • C-Wgf - Bestehende Datei unter Cursor auf neuer Registerkarte bearbeiten

Sie können auch zu einer bestimmten Zeile in der Datei gehen, wenn dem Dateinamen unter dem Cursor eine Zeilennummer folgt. Wenn Sie haben

filename:10

Sie können die Datei bearbeiten und den Cursor mit in Zeile 10 bewegen gF. Das Äquivalent gilt für C-WFeinen Split und C-WgFfür eine Registerkarte. Abschließen der Symmetrie für eine vertikale Teilung ist nicht so einfach , hier, aber ich würde vorschlagen , dass die C-WC-S-FKarte mit erhalten nnoremap <C-W><C-S-F> <C-W>vgF, imitieren die Foder Shift+ faus dem Standard - Karten als Kandidat.

Dies :ist ein Beispiel, Sie können jedes Zeichen verwenden, das kein Dateinamenzeichen ist (siehe :h 'isfname').


Alle diese Befehle kommen mit Apfelsauce, wie z

  • Wildchars erweitern
  • Suchen Sie nach Ihrer 'path'Wahl an mehr Stellen als im aktuellen Verzeichnis
  • Hinzufügen einer Dateierweiterung zum Dateinamen entsprechend Ihrer 'suffixesadd'Option
  • Ändern Sie andernfalls den angegebenen Dateinamen, um eine Übereinstimmung gemäß Ihrer 'includeexpr'Option zu finden

Lesen Sie mehr unter :help gfund in den Hilfethemen zu diesen verschiedenen Optionen.


Wenn der Dateiname unter dem Cursor eine Datei benennt, die nicht existiert, ist es möglicherweise besser, die Standardbearbeitungsbefehle mit <cfile>wie zu verwenden

:edit <cfile> // edit non-existent file under cursor in current window
:split <cfile> // edit non-existent file under cursor in split window
:vsplit <cfile> // edit non-existent file under cursor in vertical split window
:tabe <cfile> // edit non-existent file under cursor in new tabpage

und mit diesen können Sie natürlich Dinge tun :spl+10 filename, um den Cursor auf eine bestimmte Zeile :tabe+/cologne filenamezu bewegen oder um den Cursor auf das erste Auftreten eines Musters zu bewegen.

Jjaderberg
quelle
+1 Bester Kommentar mit klarer Erklärung, weitaus besser als die auf mehrere Themen verteilte Dokumentation.
Liebt Wahrscheinlichkeit
8

Verwenden Sie dazu einfach Bindungen:

in neuem Fenster öffnen (split):

nnoremap gf <C-W>f
vnoremap gf <C-W>f

In neuem Tab öffnen:

nnoremap gf <C-W>gf
vnoremap gf <C-W>gf

Überprüfen Sie auch diese: :help CTRL-W_gf

Alexander Myshov
quelle
Arbeiten diese definitiv für Sie? Vim scheint nicht zu wollen, dass ich gfzu etwas anderem zurückkomme . Sogar nnoremap gf :echo "hello"<CR> noch öffnet die Datei unter dem Cursor in einem neuen Puffer (und ja, ich habe vimrc bezogen).
Tandrewnichols
Ah, egal - ich habe ein Plugin, das sich einmischt.
Tandrewnichols