Como posso iniciar o fzf dentro do vim e abrir o arquivo selecionado em uma janela dividida?

Como posso iniciar o fzf dentro do vim e abrir o arquivo selecionado em uma janela dividida?

Como posso iniciar fzfe vimabrir o arquivo selecionado em uma janela dividida? Não quero instalar nenhum plugin.

tentei

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

Responder1

Como fzfprecisa de acesso ao console, você precisará executá-lo como um comando em primeiro plano e não há uma boa maneira de fazer issoecapture a saída fzf(o nome do arquivo) no Vim por meio de um canal. Portanto, usar um arquivo temporário para armazenar o nome do arquivo é a abordagem mais fácil aqui.

Uma solução simples é:

function! SelectFile()
  let tmp = tempname()
  execute '!ls | fzf >'.tmp
  let fname = readfile(tmp)[0]
  silent execute '!rm '.tmp
  execute 'vsplit '.fname
endfunction

Então use-o com:

:call SelectFile()

(Ou crie um mapeamento de teclas ou um comando de usuário para ele.)

Usar o Vim :terminalpara rodar fzfdentro dele (em vez de gastar com :!) também é uma boa opção.

Em qualquer caso, a melhor abordagem aqui é apenas usar um dos excelentes plug-ins do Vim, seja aquele simples e básico que está incluído nofzfem si e provavelmente também o mais completofzf.vimque se baseia no plug-in de baixo nível para fornecer recursos poderosos que você se beneficiará por ter por perto.

informação relacionada