Uma introdução rápida ao FZF (localizador interativo da linha de comando fuzzy)

11 de março de 2021

Exemplo de visualização do FZF

Mencionei FZF algumas vezes nos artigos aqui, mas eu nunca escrevi sobre isso. FZF fez parte do meu fluxo de trabalho há muito tempo, e é uma ferramenta incrível que você deve conhecer.

Eu percebo que muitos de vocês já estão usando FZF, mas para aqueles que não, este artigo é para você. Esta é apenas uma simples introdução ao FZF, sem entrar muito em detalhes. A página do projeto FZF e a wiki fornecem informações amplas sobre o FZF, seu uso, além de muitos exemplos, portanto, verifique se há mais informações.

*FZF é um rápido e interativo localizador de linha de comando escrito em Go. A ferramenta está disponível para Linux, MacOS, BSD e Windows.**

Ele pode ser usado manualmente ou em scripts analisando a saída de um comando, usando extensões de shell (que incluem auto-conclusão difusa para bash e zsh, bem como ligações chave como CTRL-T, CTRL-R e ALT-C para Bash, ZSH e Fish), e como um plugin vim/neovim. Há também um script TMUX para lançar o FZF em um painel TMUX.

Aqui está o que esses keybindings de linha de comando FZF fazem:

  • CTRL-R: Pesquisa seu histórico de comandos. Pressione Enter para colar o comando selecionado do histórico na linha de comando. Alternar a relevância de classificação para a ordem cronológica pressionando CTRL-R novamente (por padrão, a classificação é feita por relevância)
  • CTRL-T: mostra uma lista de arquivos e pastas no diretório atual (e subdiretórios). Pressione Enter para colar o caminho de arquivo/pasta selecionado para a linha de comando
  • ALT-C: mostra uma lista de subdiretórios no diretório atual. Pressione Enter para cd no diretório selecionado

Por padrão, a sintaxe de pesquisa permite digitar vários termos de pesquisa delimitados por espaços (FZF é iniciado no modo de pesquisa estendido). Se você quiser encontrar correspondências exatas, prefixe o termo de pesquisa com uma única cotação (por exemplo, 'search-term). Mais sobre a sintaxe de pesquisa FZF aqui.

O FZF Finder interativo usa as seguintes teclas por padrão: / (ou CTRL-J/CTRL-K ou CTRL-N/CTRL-P) Para mover o cursor para cima e para baixo, a tecla Enter para selecionar um item e CTRL-C (ou CTRL-G / ESC) para sair . Ele também suporta selecionar vários itens ao usar o argumento de linha de comando -m, e nesse caso, você pode selecionar vários itens usando TAB e Shift-TAB.

O FZF também vem com suporte ao mouse, para que você possa clicar, rolar, clicar duas vezes em itens, etc. Para o modo multi-seleção, você pode usar Shift-click e Shift-scroll.

Outros recursos do FZF incluem a capacidade de mostrar um painel de visualização (--preview=COMMAND), definir sua altura (por exemplo, --height 50%), adicionar uma borda (--border), usar keybindings personalizados, usar layouts diferentes (como um layout reverso), ativar o processamento de códigos de cores ANSI , e muito mais.

Alguns exemplos simples mostrando o que a linha de comando FZF Fuzzy Finder pode fazer

Busca difusa do seu histórico do shell (CTRL-R):

Conclusão difusa para arquivos e diretórios (isso é acionado, terminando o comando com a sequência do acionador, que por padrão é **, seguido pressionando TAB):

Comandos para usar no terminal

cd ** (TAB)

Da mesma forma, a FZF também pode preencher nomes de host do AutoCompletar (por exemplo, ssh ** (TAB)), bem como variáveis de ambiente e aliases (por exemplo, export ** (TAB)). Também pode preencher os IDs de processos e, nesse caso, não há sequência de gatilho, por exemplo, kill -9 (TAB).

Encontre arquivos no diretório atual (e subdiretórios) e ao selecionar um arquivo (pressionando a tecla Enter), o arquivo é aberto por meio do seu editor de linha de comando padrão:

Comandos para usar no terminal

editor $(find * -type f | fzf)

Combine-o com outros comandos para ter uma interface interativa legal com pesquisa difusa e um painel de visualização. Por exemplo, **o seguinte comando (via) usa FZF e consegue listar todos os pacotes disponíveis, permitindo que você instale um pacote pressionando a tecla Enter. Aqui, o FZF é usado com a opção --preview para mostrar um painel de visualização (neste caso, ele mostra os detalhes do pacote Deb selecionados):

Comandos para usar no terminal

apt-cache search '' | sort | cut --delimiter ' ' --fields 1 | fzf --multi --cycle --reverse --preview 'apt-cache show {1}' | xargs -r sudo apt install -y

Para a captura de tela no topo deste artigo, estou usando o seguinte comando (requer bat, um clone cat escrito em Rust que inclui destaque de sintaxe e mais):

Comandos para usar no terminal

fzf --preview 'bat --style=numbers --color=always --line-range :500 {}'

Para exemplos mais avançados, confira a wiki do FZF.

Eu também escrevi sobre algumas ferramentas/scripts de linha de comando que fazem uso de FZF Fuzzy Finder:

Instalando FZF Fuzzy Finder

Instale FZF

O FZF está disponível para Linux (incluindo várias versões ARM, por isso funciona no Raspberry Pi, por exemplo), macOS, *BSD e Windows.

No Linux, o FZF pode ser instalado a partir dos repositórios em Debian9 +, Ubuntu 19.10+, Fedora, Arch Linux, OpenSUSE, etc.

No entanto, eu pessoalmente prefiro instalá-lo usando seu script de instalação (ele baixou automaticamente o binário para o seu sistema, sem compilá-lo da fonte). Isso porque instala tudo para você, com a única coisa que é necessária é fornecer o arquivo de configuração do shell. Também é fácil atualizar para versões de FZF mais recentes (elas são liberadas com bastante frequência).

Para instalar o FZF usando seu script de instalação, certifique-se de ter git instalado e, em seguida, use:

Comandos para usar no terminal

git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf~/.fzf/install

O script de instalação lhe fará algumas perguntas sobre quais recursos permitirem. Você provavelmente vai querer responder sim (y) para todos eles.

É isso. Agora tudo que você precisa fazer é reiniciar sua concha ou recarregar arquivo de configuração:

  • Bash:

Comandos para usar no terminal

source ~/.bashrc

  • Zsh:

Comandos para usar no terminal

source ~/.zshrc

  • Fish:

Comandos para usar no terminal

fzf_key_bindings

Usando este método de instalação, se você quiser atualizá-lo (tanto a conclusão quanto o binário), use:

Comandos para usar no terminal

cd ~/.fzfgit pull./install

Também é mais fácil de desinstalá-lo (isso desfaz as alterações feitas para ~/.bashrc ou ~/.zshrc, e remove os atalhos do Fish de ~/.config; ele não remove o diretório ~/.fzf):

Comandos para usar no terminal

cd ~/.fzf./uninstall

Esse post foi traduzido do site LinuxUprising.com pela rtland.team.

Linux Uprising Blog

Confira a versão original desse post em inglês:

A Quick Introduction To fzf (Interactive Command-Line Fuzzy Finder)
Propaganda
Propaganda