¿Abrir el nombre del archivo debajo del cursor como gf, pero en una nueva pestaña (o dividida)?

43

El comando de modo normal gfva a un archivo con la ruta en la que se encuentra actualmente el cursor.

Pero lo hace en la ventana actual, reemplazando el texto actual. Eso significa que debe navegar hacia atrás explícitamente para ir hacia atrás más tarde, y que necesita escribir cambios en el búfer actual potencialmente.

¿Estoy seguro de que es posible abrir el archivo debajo del cursor en una nueva pestaña?

Volker Siegel
fuente
3
Activar la 'hidden'opción ( set hidden) le permite navegar lejos de buffers no guardados. Para mí, esto fue un gran impulso de productividad, y fue vital para dejar de depender tanto de las divisiones y pestañas.
tommcdo

Respuestas:

56

EDITAR: sugiera asignaciones simétricas para el caso de división vertical, ya que Vim tiene por defecto dos asignaciones para el caso de división horizontal.

Hay varias maneras de editar el "archivo debajo del cursor", y aunque ciertamente puede reasignar gfpara editar en una nueva pestaña como menciona @ alexander-myshov, eso significa que tiene dos formas de editarlo en una nueva pestaña, pero no hay manera de edítelo en la ventana actual, que a veces también puede querer hacer. No es difícil usar las asignaciones estándar, pero si desea reasignar una de ellas gf, le sugiero cambiar las asignaciones, para que no pierda una de ellas.

Algunas de las formas de editar un nombre de archivo debajo del cursor son

  • gf - Edite el archivo existente debajo del cursor en la misma ventana
  • C-Wf - Edite el archivo existente debajo del cursor en la ventana dividida
  • C-WC-F - Edite el archivo existente debajo del cursor en la ventana dividida
  • C-Wgf - Edite el archivo existente debajo del cursor en una nueva pestaña

No existe una asignación estándar para editar el archivo existente debajo del cursor en una división vertical, pero puede lograrlo dividiendo primero la ventana verticalmente y luego editando el archivo debajo del cursor en la ventana actual.

  • C-Wv+ gf- Edita el archivo existente debajo del cursor en una ventana dividida verticalmente

Como puede ver arriba, hay dos asignaciones predeterminadas para editar el archivo debajo del cursor en una división horizontal. Por lo tanto, puede reasignar uno de ellos a la cadena de teclas anterior, extendiendo el grupo de mapas para cubrir también el caso de división vertical. Puede enlazar cualquier cosa, por supuesto, pero esto parece completar la simetría muy bien: nnoremap <C-W><C-F> <C-W>vgf. Ahora tu tienes

  • gf - Edite el archivo existente debajo del cursor en la misma ventana
  • C-Wf - Edite el archivo existente debajo del cursor en la ventana dividida
  • C-WC-F - Edite el archivo existente debajo del cursor en una ventana dividida verticalmente
  • C-Wgf - Edite el archivo existente debajo del cursor en una nueva pestaña

También puede ir a una línea particular en el archivo, si el nombre del archivo debajo del cursor va seguido de un número de línea. Si usted tiene

filename:10

puede editar el archivo y hacer que el cursor se mueva a la línea 10 con gF. El equivalente es cierto para C-WFuna división y C-WgFpara una pestaña. Completar la simetría para una división vertical no es tan sencillo aquí, pero sugeriría que el C-WC-S-Fmapa obtenido con nnoremap <C-W><C-S-F> <C-W>vgF, imitando el Fo Shift+ fde los mapas predeterminados como candidato.

El :es un ejemplo, puede usar cualquier carácter que no sea un nombre de archivo (ver :h 'isfname').


Todos estos comandos vienen con salsa de manzana, como

  • expandir wildchars
  • buscar en más lugares que el directorio actual, según su 'path'opción
  • Agregar una extensión de archivo al nombre del archivo, según su 'suffixesadd'opción
  • de lo contrario, modifique el nombre de archivo dado para encontrar una coincidencia, de acuerdo con su 'includeexpr'opción

Lea más en :help gfy los temas de ayuda para estas diversas opciones.


Si el nombre de archivo debajo del cursor nombra un archivo que no existe, puede ser mejor que use los comandos de edición estándar con <cfile>, como

:edit <cfile> // edit non-existent file under cursor in current window
:split <cfile> // edit non-existent file under cursor in split window
:vsplit <cfile> // edit non-existent file under cursor in vertical split window
:tabe <cfile> // edit non-existent file under cursor in new tabpage

y con estos, por supuesto, puede usar cosas como :spl+10 filenamemover el cursor a una línea en particular o :tabe+/cologne filenamemover el cursor a la primera aparición de un patrón.

jjaderberg
fuente
+1 El mejor comentario con una explicación clara, mucho mejor que la documentación dividida en varios temas.
Ama la probabilidad el
8

Solo use enlaces para esto:

abriendo en una nueva ventana (dividida):

nnoremap gf <C-W>f
vnoremap gf <C-W>f

abriendo en una nueva pestaña:

nnoremap gf <C-W>gf
vnoremap gf <C-W>gf

también verifique esto: :help CTRL-W_gf

Alexander Myshov
fuente
¿Estos definitivamente funcionan para usted? Vim no parece querer que me reasigne gfa otra cosa. Incluso nnoremap gf :echo "hello"<CR> aún abre el archivo bajo el cursor en un nuevo búfer (y sí, obtuve vimrc).
tandrewnichols
Ah, no importa, tengo un complemento que interfiere.
tandrewnichols