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:
- ritorna al file precedente (simile a Ctrl + T per tag), oppure
- rimappa
gf
per avviare automaticamente il nuovo file in una nuova finestra.
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.
Vedi : help alternate-file .
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>