Come si ritorna da 'gf' in Vim


187

Sto usando Vim per Windows installato in modalità Unix. Grazie a questo sito ora uso il gfcomando per andare a un file sotto il cursore.

Sto cercando un comando per:

  1. ritorna al file precedente (simile a Ctrl+ Tper i tag), o
  2. rimappare gf per avviare automaticamente il nuovo file in una nuova finestra.

Risposte:


294

Io uso Ctrl-O


43
CTRL-O per passare a una posizione precedente nella jump list, <Tab> o CTRL-I per passare a una posizione più recente.
Sébastien RoccaSerra,

4
@ g33kz0r il mnemonico sarebbe O = OUT, I = IN => Ctrl - O ti porta fuori, Ctrl ti porta dentro. Se ogni salto è come passare attraverso una porta, cioè.
kronn,

CTRL-O salterà all'ultima posizione visitata, questo è fastidioso quando è stato cercato il nuovo file. Preferisco Shift-Ctrl-6 (nel mio caso Ctrl-6 non funziona)
Adriano

71

Uso spesso Ctrl- 6per questo.

È utile perché mi consente di saltare rapidamente avanti e indietro tra i due file.


47

Potresti voler usare CTRL-W gfper aprire il file in una nuova scheda.

È possibile chiudere il file appena aperto come sempre :bd, oppure utilizzare CTRL-6e altri modi consueti per modificare i buffer.


7
la scheda è più conveniente del buffer per me e l'utilizzo nnoremap gf <C-W>gfper aprire in una nuova scheda potrebbe essere migliore.
Searene,

13

Usa gf per scendere in un file e usa: bf per tornare indietro


1
Avevo due finestre aperte in una scheda e questo ha appena aperto la seconda finestra nella prima invece di tornare al buffer precedente.
Kenny Evitt,

12

Basta usare :e#seguito da Enter- che sostanzialmente dice di modificare l'ultimo (più recente) file.


9

Ctrl-Shift-6 è uno.

:e#↲ è un altro.


8
Il turno non è necessario. Smetti di abusare delle dita.
Zathrus,

6
Um. Sono un po 'un vecchio timer. Ctrl-6 non funzionava con vi sul terminale Wyse che avevo al lavoro anni fa. Vedi, alcune cose rimangono incise. E non usare Shift in questa combo difficilmente farebbe la differenza per il mio abuso totale di dita. Ehi, almeno hai fatto del tuo meglio. HTH. MANO.
tzot

Questo passa al cosiddetto file alternativo .
jpaugh

5

Ho CTRL-W f al lavoro.
È abbastanza deprimente che ho passato così tanto tempo a perfezionare le mappe per questi comandi solo per scoprire che ci sono versioni integrate.


5

Non conosco la risposta alla parte 2 della tua domanda, ma posso aiutarti con la parte 1. Usa

:e#

Vim mantiene un elenco di file (buffer) che sta modificando. Se digiti

:buffers

elencherà tutti i file che stai modificando. Il file in quell'elenco con una% accanto è il file corrente. Quello con il # accanto è il file alternativo. : e # passa dal file corrente a quello alternativo. Invece di digitare così tanto, associo F2 a: e # in modo da poter facilmente passare tra il file corrente e quello alternativo. Mappo il comando su F2 aggiungendolo a .vimrc

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

2
Non penso che tu voglia usare: e # perché potrebbe potenzialmente ricaricare il file. : b # fa l'equivalente senza questo problema.
Lambacck,

Buon punto. Questo passa all'altro buffer senza ricaricarlo.
codebunny,


2

Quando si apre un nuovo file (con gf o : n o un altro comando) il vecchio file rimane in un elenco di buffer. Puoi elencare i file aperti con : ls

Se vuoi navigare facilmente tra i buffer in vim, puoi creare una mappatura come questa:

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

Ora puoi passare da un buffer all'altro con Alt + freccia sinistra o Alt + freccia destra.

La documentazione completa sulle mappature è qui:

:help map.txt

0

Non ho guardato il tuo comando gf ma immagino che usi il comando : e o : find .
Supponendo che ciò sia corretto, è sufficiente sostituire : e o : find con : new (o : vnew per una divisione verticale) e il file si aprirà in una nuova finestra anziché nella stessa.

per esempio

"Passa tra intestazione e cpp
nmap, s: find%: t: ​​r.cpp <CR>
nmap, S: new%: t: ​​r.cpp <CR>
nmap, h: find%: t: ​​rh <CR>
nmap, H: new%: t: ​​rh <CR>
nmap, F: new = expand ("<cfile>: t") <CR> <CR>
nmap, d: new = expand ("<cfile>") <CR> <CR> 


2
gfè integrato. Appartiene a tutti noi. :-)
jpaugh
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.