¿Cómo puedo iniciar fzf dentro de vim y abrir el archivo seleccionado en una ventana dividida?

¿Cómo puedo iniciar fzf dentro de vim y abrir el archivo seleccionado en una ventana dividida?

¿Cómo puedo iniciar fzfel interior vimy abrir el archivo seleccionado en una ventana dividida? No quiero instalar ningún complemento.

Lo intenté

:!a=$(ls | fzf) && vsplit $a

Respuesta1

Dado que fzfnecesita 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 :terminalpara ejecutarlo fzfdentro (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.

información relacionada