Wie kommst du von 'gf' in Vim zurück?


187

Ich verwende Vim für Windows, das im Unix-Modus installiert ist. Dank dieser Seite benutze ich jetzt den gfBefehl, um zu einer Datei unter dem Cursor zu gelangen.

Ich suche nach einem Befehl für:

  1. zur vorherigen Datei zurückkehren (ähnlich wie Ctrl+ Tfür ctags) oder
  2. Neuzuordnung gf , um die neue Datei automatisch in einem neuen Fenster zu starten.

Antworten:


294

Ich benutze Ctrl-O


43
STRG-O, um zu einer älteren Position in der Sprungliste zu gelangen, <Tab> oder STRG-I, um zu einer neueren Position zu gelangen.
Sébastien RoccaSerra

4
@ g33kz0r die Mnemonik wäre O = OUT, I = IN => Strg - O bringt dich raus, Strg bringt dich rein. Wenn jeder Sprung wie durch eine Tür geht, das heißt.
Krone

STRG-O springt zur zuletzt besuchten Position. Dies ist ärgerlich, wenn die neue Datei durchsucht wurde. Ich bevorzuge Umschalt-Strg-6 (in meinem Fall funktioniert Strg-6 nicht)
Adriano

71

Ich benutze häufig Ctrl- 6dafür.

Es ist praktisch, weil ich so schnell zwischen den beiden Dateien hin und her springen kann.


47

Möglicherweise möchten Sie CTRL-W gfdie Datei in einer neuen Registerkarte öffnen.

Sie können die neu geöffnete Datei wie immer schließen :bdoder CTRL-6andere übliche Methoden zum Ändern von Puffern verwenden.


7
Tab ist für mich bequemer als Puffer, und nnoremap gf <C-W>gfdas Öffnen in einem neuen Tab ist möglicherweise besser.
Searene

13

Verwenden Sie gf, um in eine Datei abzusteigen, und verwenden Sie: bf, um zurückzukehren


1
Ich hatte zwei Fenster in einem Tab geöffnet und dies öffnete nur das zweite Fenster im ersten, anstatt zum vorherigen Puffer zurückzukehren.
Kenny Evitt

12

Verwenden Sie einfach :e#gefolgt von Enter- das heißt im Grunde, die letzte (neueste) Datei zu bearbeiten.


9

Strg-Umschalt-6 ist eins.

:e#↲ ist ein anderer.


8
Die Verschiebung ist nicht notwendig. Hör auf, deine Finger zu missbrauchen.
Zathrus

6
Äh. Ich bin eine Art Oldtimer. Strg-6 würde nicht mit vi auf dem Wyse-Terminal funktionieren, das ich vor Jahren bei der Arbeit hatte. Sehen Sie, einige Dinge bleiben geätzt. Und wenn ich Shift in dieser Kombination nicht benutze, würde das kaum einen Unterschied für meinen totalen Fingermissbrauch bedeuten. Hey, zumindest hast du dein Bestes versucht. HTH. HAND.
tzot

Dies wechselt zu der sogenannten alternativen Datei .
Jpaugh

5

Ich habe STRG-W f zum Arbeiten gebracht.
Es ist ziemlich deprimierend, dass ich so lange damit verbracht habe, Karten für diese Befehle zu perfektionieren, nur um festzustellen, dass es integrierte Versionen gibt.


5

Ich kenne die Antwort auf Teil 2 Ihrer Frage nicht, kann aber bei Teil 1 helfen

:e#

Vim verwaltet eine Liste der Dateien (Puffer), die bearbeitet werden. Wenn Sie tippen

:buffers

Es werden alle Dateien aufgelistet, die Sie gerade bearbeiten. Die Datei in dieser Liste mit einem% daneben ist die aktuelle Datei. Die mit dem # daneben ist die alternative Datei. : e # wechselt zwischen der aktuellen und der alternativen Datei. Anstatt so viel einzugeben, ordne ich F2 zu: e #, damit ich leicht zwischen der aktuellen und der alternativen Datei wechseln kann. Ich ordne den Befehl F2 zu, indem ich ihn zu .vimrc hinzufüge

nmap `<F2> :e#<CR>`

2
Ich glaube nicht, dass Sie Folgendes verwenden möchten: e #, da dies die Datei möglicherweise neu laden könnte. : b # macht das Äquivalent ohne dieses Problem.
Lambacck

Guter Punkt. Das wechselt zum anderen Puffer, ohne ihn neu zu laden.
Codebunny


2

Wenn Sie eine neue Datei öffnen (mit gf oder : n oder einem anderen Befehl), bleibt die alte Datei in einer Pufferliste. Sie können geöffnete Dateien auflisten mit : ls

Wenn Sie in vim einfach zwischen Puffern navigieren möchten, können Sie eine Zuordnung wie folgt erstellen:

nmap <M-LEFT> :bN<cr>
nmap <M-RIGHT> :bn<cr>

Jetzt können Sie mit Alt + Linkspfeil oder Alt + Rechtspfeil zwischen Puffern wechseln.

Die vollständige Dokumentation zu Zuordnungen finden Sie hier:

:help map.txt

0

Ich habe mir Ihren Befehl gf nicht angesehen, aber ich stelle mir vor, er verwendet den Befehl : e oder : find .
Angenommen, dies ist korrekt, ersetzen Sie einfach : e oder : find durch : new (oder : vnew für eine vertikale Teilung), und die Datei wird in einem neuen Fenster anstelle desselben geöffnet.

z.B

"Wechseln Sie zwischen Header und CPP
nmap, s: find%: t: ​​r.cpp <CR>
nmap, S: new%: t: ​​r.cpp <CR>
nmap, h: find%: t: ​​rh <CR>
nmap, H: neu%: t: ​​rh <CR>
nmap, F: new = expand ("<cfile>: t") <CR> <CR>
nmap, d: new = expand ("<cfile>") <CR> <CR> 


2
gfist eingebaut. Es gehört uns allen. :-)
jpaugh
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.