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).

psibar
fuente
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)
psibar
fuente
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í
Ingo Karkat
fuente
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 .

Waldauf
fuente
0

Esto funcionó para mí:

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

nmap ,f :call OpenFileInPrevWindow()<CR>
sirex
fuente