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.