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.

Réponses:


300

J'utilise Ctrl-O


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.


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.


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


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).


9

Ctrl-Shift-6 en est un.

:e#↲ en est une autre.


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.


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>`

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

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> 


2
gfest intégré. Cela nous appartient à tous. :-)
jpaugh
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.