AI 资讯
Fzf com Tmux - integração e pop-ups
1. Retomando: o que é o Fzf Na primeira parte desta série vimos o que é o fzf, como instalá-lo e como usá-lo direto no shell com Ctrl+R , Ctrl+T e Alt+C . Quem também usa tmux no dia a dia ganha um segundo nível de integração: o fzf pode rodar dentro de janelas flutuantes (pop-ups) do próprio tmux, sem interferir no layout de painéis já aberto, e servir de seletor para operações do próprio tmux — trocar de sessão, de janela, de painel, matar processos em outro painel etc. 2. Por que integrar Fzf com Tmux Sem integração, usar o fzf dentro de uma sessão tmux funciona normalmente, mas cada busca ocupa o painel inteiro: se o objetivo é só escolher um arquivo ou trocar de branch rapidamente, o conteúdo do painel (um editor, um servidor rodando) é temporariamente coberto e é preciso "voltar" depois. Além disso, o tmux tem sua própria lista de coisas que fazem sentido filtrar de forma fuzzy — sessões, janelas, painéis — e não há um binding nativo do tmux para isso. O fzf-tmux , incluído na instalação do fzf, resolve o primeiro problema: roda o fzf em uma janela sobreposta (pop-up ou split temporário) que desaparece assim que a seleção é feita, sem afetar o conteúdo do painel original. Combinado com bindings customizados no tmux.conf , também resolve o segundo. 3. fzf-tmux: pop-ups nativos fzf-tmux é um wrapper de shell em torno do fzf que aceita as mesmas opções, mais flags de posicionamento e tamanho da janela sobreposta: # pop-up centralizado, 80% da largura e 60% da altura do terminal fzf-tmux -p 80%,60% # split na parte de baixo do painel atual, ocupando 40% da altura fzf-tmux -d 40% # split lateral à direita, ocupando 50% da largura fzf-tmux -d 50% -r A flag -p (disponível a partir do tmux 3.2, que suporta display-popup ) é a mais usada hoje: cria uma janela verdadeiramente flutuante, sobreposta ao conteúdo do painel, que não reorganiza o layout existente — diferente do -d , que faz um split real e temporariamente redistribui o espaço entre painéis. # substitui o Ctrl
AI 资讯
Fzf - o que é, como instalar e onde usar no dia a dia
1. O problema que o Fzf resolve Quem vive no terminal conhece a cena: Ctrl+R para buscar um comando no histórico, mas a busca é linear e só mostra um resultado por vez; cd para um diretório profundo, mas é preciso lembrar (ou digitar) o caminho inteiro; git checkout para uma branch, mas primeiro é necessário rodar git branch e copiar o nome exato. Em todos esses casos, o gargalo é o mesmo: escolher um item entre muitos, digitando cada vez mais texto até sobrar só um. O fzf (fuzzy finder) resolve isso de um jeito genérico: ele pega qualquer lista de linhas — histórico de comandos, arquivos, branches, processos, o que for — e transforma essa lista em um filtro interativo, digitado em tempo real, onde não é preciso acertar a grafia exata nem a ordem das letras. Basta digitar pedaços do que se lembra e o fzf ordena os resultados por relevância. 2. O que é o Fzf Fzf é um filtro de linha de comando escrito em Go, de código aberto, mantido por Junegunn Choi. Ele não sabe nada sobre arquivos, git ou processos — a única coisa que ele faz é ler linhas da entrada padrão ( stdin ) e devolver, na saída padrão ( stdout ), a linha (ou linhas) selecionada interativamente. Essa simplicidade é o que o torna tão versátil: qualquer comando que produza uma lista de texto pode ser "encanado" ( | ) para dentro do fzf. # a ideia básica: qualquer lista vira um menu interativo ls | fzf history | fzf git branch | fzf ps aux | fzf Na prática, o fzf raramente é usado sozinho dessa forma — o valor real aparece quando ele é integrado ao shell e a outras ferramentas, o que este artigo cobre a partir da próxima seção. 3. Instalando o Fzf O fzf está disponível nos principais gerenciadores de pacote: # Debian/Ubuntu sudo apt install fzf # Fedora sudo dnf install fzf # Arch Linux sudo pacman -S fzf # macOS (Homebrew) brew install fzf Também é possível instalar via git, o que traz um script auxiliar de configuração dos atalhos de shell (usados na próxima seção): git clone --depth 1 https://github.com/j