Domanda

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

Sto cercando un comando per:

  1. ritorna al file precedente (simile a Ctrl + T per tag), oppure
  2. rimappa gf per avviare automaticamente il nuovo file in una nuova finestra.
È stato utile?

Soluzione

Uso Ctrl-O

Altri suggerimenti

Uso spesso Ctrl - 6 per questo.

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

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

Puoi chiudere il file appena aperto come sempre con : bd , oppure usare CTRL-6 e altri modi consueti per modificare i buffer.

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

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

Ctrl-Shift-6 è uno.

: e # ? è un altro.

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 si digita

: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 i file correnti e quelli alternativi. Mappo il comando su F2 aggiungendolo a .vimrc

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

Ho fatto funzionare CTRL-W f.
È abbastanza deprimente che abbia speso così tanto tempo a perfezionare le mappe per questi comandi solo per scoprire che ci sono versioni integrate.

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 sui mapping è qui:

:help map.txt

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

es.

"Switch between header and cpp
nmap ,s :find %:t:r.cpp<CR>
nmap ,S :new %:t:r.cpp<CR>
nmap ,h :find %:t:r.h<CR>
nmap ,H :new %:t:r.h<CR>
nmap ,F :new =expand("<cfile>:t")<CR><CR>
nmap ,d :new =expand("<cfile>")<CR><CR> 

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top