Comment revenir de 'gf' à Vim

189

J'utilise Vim pour les fenêtres installées en mode Unix. Grâce à ce site, j'utilise maintenant la gfcommande pour accéder à un fichier sous le curseur.

Je recherche une commande pour:

  1. revenir au fichier précédent (similaire à Ctrl+ Tpour les ctags), ou
  2. remapper gf pour lancer automatiquement le nouveau fichier dans une nouvelle fenêtre.
JayG
la source

Réponses:

300

J'utilise Ctrl-O

sauter
la source
44
CTRL-O pour aller à une position plus ancienne dans la liste de sauts, <Tab> ou CTRL-I pour aller à une nouvelle position.
Sébastien RoccaSerra
5
@ g33kz0r le mnémonique serait O = OUT, I = IN => Ctrl - O vous fait sortir, Ctrl vous fait entrer. Si chaque saut est comme passer par une porte, c'est.
kronn
CTRL-O passera à la dernière position visitée, c'est ennuyeux lorsque le nouveau fichier a été recherché. Je préfère Shift-Ctrl-6 (dans mon cas, Ctrl-6 ne fonctionne pas)
Adriano
73

J'utilise fréquemment Ctrl- 6pour cela.

C'est pratique car cela me permet de passer rapidement d'un fichier à l'autre.

Dominic Dos Santos
la source
47

Vous voudrez peut-être utiliser CTRL-W gfpour ouvrir le fichier dans un nouvel onglet.

Vous pouvez fermer le fichier nouvellement ouvert comme toujours avec :bd, ou utiliser CTRL-6et d'autres moyens habituels de changer les tampons.

Roman Odaisky
la source
7
tab est plus pratique que le tampon pour moi, et utiliser nnoremap gf <C-W>gfpour ouvrir dans un nouvel onglet peut être mieux.
Searene
14

Utilisez gf pour descendre dans un fichier et utilisez: bf pour revenir

RAM
la source
1
J'avais deux fenêtres ouvertes dans un onglet et cela venait d'ouvrir la deuxième fenêtre dans la première au lieu de revenir au tampon précédent.
Kenny Evitt
12

Utilisez simplement :e#suivi de Enter- qui indique essentiellement de modifier le dernier fichier (le plus récent).

paxdiablo
la source
9

Ctrl-Shift-6 en est un.

:e#↲ en est une autre.

tzot
la source
8
Le changement n'est pas nécessaire. Arrêtez d'abuser de vos doigts.
Zathrus
6
Hum. Je suis un peu vieux. Ctrl-6 ne fonctionnerait pas avec vi sur le terminal Wyse que j'avais au travail il y a des années. Voyez, certaines choses restent gravées. Et ne pas utiliser Shift dans ce combo ne ferait guère de différence dans mon abus total des doigts. Hé, au moins tu as fait de ton mieux. HTH. MAIN.
tzot le
Cela passe à ce qu'on appelle le fichier alternatif .
jpaugh
5

J'ai fait fonctionner CTRL-W f.
C'est assez déprimant que j'aie passé si longtemps à perfectionner des cartes pour ces commandes pour découvrir qu'il existe des versions intégrées.


la source
5

Je ne connais pas la réponse à la partie 2 de votre question, mais je peux vous aider avec la partie 1. Utilisez

:e#

Vim maintient une liste de fichiers (tampons) en cours d'édition. Si vous tapez

:buffers

il listera tous les fichiers que vous éditez actuellement. Le fichier de cette liste avec un% à côté est le fichier actuel. Celui avec le # à côté est le fichier alternatif. : e # basculera entre le fichier actuel et le fichier alternatif. Plutôt que de taper autant, je mappe F2 à: e # afin que je puisse facilement basculer entre les fichiers actuels et alternatifs. Je mappe la commande à F2 en l'ajoutant à .vimrc

nmap `<F2> :e#<CR>`
code lapin
la source
2
Je ne pense pas que vous souhaitiez utiliser: e # car cela pourrait potentiellement recharger le fichier. : b # fait l'équivalent sans ce problème.
lambacck
Bon point. Cela passe à l'autre tampon sans le recharger.
codebunny
2

Lorsque vous ouvrez un nouveau fichier (avec gf ou : n ou une autre commande), l'ancien fichier reste dans une liste de tampons. Vous pouvez lister les fichiers ouverts avec : ls

Si vous souhaitez naviguer facilement entre les tampons dans vim, vous pouvez créer un mappage comme celui-ci:

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

Vous pouvez maintenant basculer entre les tampons avec Alt + flèche gauche ou Alt + flèche droite.

La documentation complète sur les mappages est ici:

:help map.txt
Oli
la source
0

Je n'ai pas regardé votre commande gf mais j'imagine qu'elle utilise la commande : e ou : find .
En supposant que cela est correct, remplacez simplement : e ou : find par : new (ou : vnew pour une division verticale) et le fichier s'ouvrira dans une nouvelle fenêtre au lieu de la même.

par exemple

"Basculer entre l'en-tête et cpp
nmap, s: trouver%: t: ​​r.cpp <CR>
nmap, S: nouveau%: t: ​​r.cpp <CR>
nmap, h: trouver%: t: ​​rh <CR>
nmap, H: nouveau%: t: ​​rh <CR>
nmap, F: new = expand ("<cfile>: t") <CR> <CR>
nmap, d: new = expand ("<cfile>") <CR> <CR> 


la source
2
gfest intégré. Cela nous appartient à tous. :-)
jpaugh