
Como posso iniciar fzf
e vim
abrir o arquivo selecionado em uma janela dividida? Não quero instalar nenhum plugin.
tentei
:!a=$(ls | fzf) && vsplit $a
Responder1
Como fzf
precisa 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 :terminal
para rodar fzf
dentro 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.