acceso directo de vim para abrir un archivo debajo del cursor en una ventana ya abierta


12

En vim puede abrir un archivo debajo del cursor con el gfcomando

También se puede abrir fácilmente ese archivo en una nueva ventana dividida presionando <c-w> f. Esta es una característica realmente agradable y que ahorra tiempo.

Sin embargo, no puedo entender cómo abrir el archivo en una ventana dividida ya abierta (sin crear una nueva).


1
Es posible que desee echar un vistazo a la previewfunción (ver :h preview).
Stéphane Chazelas

Correcto, yo también uso la vista previa. Sin embargo, no quería abrir el archivo en la ventana de vista previa, sino explícitamente en otro.
psibar

Respuestas:


10

Reuní todas las piezas para hacer el truco. La mejor manera es crear una asignación personalizada para todos los comandos:

 map <F8> :let mycurf=expand("<cfile>")<cr><c-w> w :execute("e ".mycurf)<cr><c-w>p

Explicación:

  • map <F8> asigna en "F8" los comandos que siguen
  • let mycurf=expand("<cfile>") obtiene el nombre del archivo debajo del cursor y lo guarda en mycurf
  • <c-w>w cambia el foco a la siguiente ventana dividida abierta
  • execute("e ".mycurf) abre el archivo guardado en mycurf
  • finalmente <c-w>pcambia el foco a la ventana anterior (de donde venimos)

1

Eso no se puede hacer fácilmente. A [count]antes <C-w>fespecifica qué coincidencia de archivo 'path'se abre, no selecciona una ventana existente. Solo para el <C-w>wcomando, [count]significa "ir al número de ventana existente".

Para obtener esa funcionalidad, debe escribir una asignación personalizada que

  • toma el archivo, va a la [count]ventana y emula el gfcomando, o
  • clona el búfer actual en la [count]ventana y se ejecuta gfallí

Sí, la única forma de hacerlo es escribir una asignación personalizada. Estaba teniendo problemas para agarrar el archivo debajo del cursor. Pero creo que lo he descubierto ahora
psibar

1

Busqué la misma función de VIm y descubrí esta solución que funciona como encanto:

map <F8> :vertical wincmd f<CR>

Página de origen .


0

Esto funcionó para mí:

function! OpenFileInPrevWindow()
    let cfile = expand("<cfile>")
    wincmd p
    execute "edit " . cfile
endfunction

nmap ,f :call OpenFileInPrevWindow()<CR>
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.