¿Cómo regresas de 'gf' en Vim?


187

Estoy usando Vim para Windows instalado en modo Unix. Gracias a este sitio ahora uso el gfcomando para ir a un archivo debajo del cursor.

Estoy buscando un comando para:

  1. volver al archivo anterior (similar a Ctrl+ Tpara ctags), o
  2. reasignar gf para iniciar automáticamente el nuevo archivo en una nueva ventana.

Respuestas:


294

Utilización Me Ctrl-O


43
CTRL-O para ir a una posición anterior en la lista de salto, <Tab> o CTRL-I para ir a una posición más nueva.
Sébastien RoccaSerra

44
@ g33kz0r la mnemónica sería O = OUT, I = IN => Ctrl - O te saca, Ctrl te trae. Si cada salto es como pasar por una puerta, eso es.
kronn

CTRL-O saltará a la última posición visitada, esto es molesto cuando se ha buscado el nuevo archivo. Prefiero Shift-Ctrl-6 (en mi caso Ctrl-6 no funciona)
Adriano

71

Con frecuencia uso Ctrl- 6para esto.

Es útil porque me permite saltar rápidamente de un lado a otro entre los dos archivos.


47

Es posible que desee utilizar CTRL-W gfpara abrir el archivo en una nueva pestaña.

Puede cerrar el archivo recién abierto como siempre con :bd, o usar CTRL-6y otras formas habituales de cambiar los búferes.


77
La pestaña es más conveniente que el búfer para mí, y usar nnoremap gf <C-W>gfpara abrir en una nueva pestaña puede ser mejor.
Searene

14

Use gf para descender a un archivo y use: bf para volver


1
Tenía dos ventanas abiertas en una pestaña y esto acaba de abrir la segunda ventana en la primera en lugar de saltar al búfer anterior.
Kenny Evitt

12

Simplemente use :e#seguido de Enter- que básicamente dice editar el último archivo (el más reciente).


9

Ctrl-Shift-6 es uno.

:e#↲ es otro.


8
El cambio no es necesario. Deja de abusar de tus dedos.
Zathrus

66
Um. Soy una especie de viejo temporizador. Ctrl-6 no funcionaría con vi en la terminal Wyse que solía tener en el trabajo hace años. Mira, algunas cosas quedan grabadas. Y no usar Shift en este combo difícilmente marcaría la diferencia en mi abuso total de dedos. Oye, al menos lo hiciste lo mejor que pudiste. HTH MANO.
Tzot

Esto cambia a lo que se llama el archivo alternativo .
jpaugh

5

Tengo CTRL-W f para trabajar.
Es bastante deprimente que haya pasado tanto tiempo perfeccionando mapas para estos comandos solo para descubrir que hay versiones integradas.


5

No sé la respuesta a la parte 2 de tu pregunta, pero puedo ayudarte con la parte 1. Usa

:e#

Vim mantiene una lista de archivos (buffers) que está editando. Si escribes

:buffers

enumerará todos los archivos que está editando actualmente. El archivo en esa lista con un% al lado es el archivo actual. El que tiene el # al lado es el archivo alternativo. : e # cambiará entre el archivo actual y el alternativo. En lugar de escribir tanto, asigno F2 a: e # para poder cambiar fácilmente entre los archivos actuales y alternativos. Asigno el comando a F2 agregando esto a .vimrc

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

2
No creo que quieras usar: e # porque eso podría volver a cargar el archivo. : b # hace el equivalente sin este problema.
lambacck

Buen punto. Eso cambia al otro búfer sin recargarlo.
codebunny


2

Cuando abre un archivo nuevo (con gf o : no con otro comando), el archivo antiguo permanece en una lista de búfer. Puede enumerar archivos abiertos con : ls

Si desea navegar fácilmente entre buffers en vim, puede crear una asignación como esta:

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

Ahora puede cambiar entre buffers con Alt + flecha izquierda o Alt + flecha derecha.

La documentación completa sobre las asignaciones está aquí:

:help map.txt

0

No he visto tu comando gf pero imagino que usa el comando : e o : find .
Suponiendo que esto sea correcto, simplemente reemplace : e o : find con : new (o : vnew para una división vertical) y el archivo se abrirá en una nueva ventana en lugar de la misma.

p.ej

"Cambiar entre encabezado y cpp
nmap, s: find%: t: ​​r.cpp <CR>
nmap, S: nuevo%: t: ​​r.cpp <CR>
nmap, h: find%: t: ​​rh <CR>
nmap, H: nuevo%: t: ​​rh <CR>
nmap, F: nuevo = expandir ("<cfile>: t") <CR> <CR>
nmap, d: new = expand ("<cfile>") <CR> <CR> 


2
gfEstá incorporado. Nos pertenece a todos. :-)
jpaugh
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.