
¿Cómo puedo iniciar fzf
el interior vim
y abrir el archivo seleccionado en una ventana dividida? No quiero instalar ningún complemento.
Lo intenté
:!a=$(ls | fzf) && vsplit $a
Respuesta1
Dado que fzf
necesita acceso a la consola, deberá ejecutarlo como un comando de primer plano y realmente no existe una buena manera de hacerlo.ycapturar la salida de fzf
(el nombre del archivo) en Vim a través de una tubería. Entonces, usar un archivo temporal para almacenar el nombre del archivo es el método más sencillo aquí.
Una solución sencilla es:
function! SelectFile()
let tmp = tempname()
execute '!ls | fzf >'.tmp
let fname = readfile(tmp)[0]
silent execute '!rm '.tmp
execute 'vsplit '.fname
endfunction
Luego úsalo con:
:call SelectFile()
(O cree una asignación de claves o un comando de usuario para ello).
Usar Vim :terminal
para ejecutarlo fzf
dentro (en lugar de gastar dinero con :!
) también es una buena opción.
En cualquier caso, el mejor enfoque aquí es simplemente usar uno de los excelentes complementos de Vim, ya sea el simple y básico que se incluye confzfen sí y probablemente también el más completofzf.vimque se basa en el complemento de bajo nivel para ofrecer potentes funciones que le beneficiará tener a su disposición.