Agradecimentos especiais a:
Warp é um terminal moderno baseado em Rust com IA integrada para que você e sua equipe possam criar ótimos softwares com mais rapidez.
Visite warp.dev para saber mais.
fzf é um localizador difuso de linha de comando de uso geral.
É um programa de filtro interativo para qualquer tipo de lista; arquivos, histórico de comandos, processos, nomes de host, marcadores, commits git, etc. Ele implementa um algoritmo de correspondência "fuzzy", para que você possa digitar rapidamente padrões com caracteres omitidos e ainda obter os resultados desejados.
Portátil — Distribuído como um único binário para fácil instalação
Extremamente rápido — Código altamente otimizado processa instantaneamente milhões de itens
Extremamente versátil — Totalmente personalizável através de um mecanismo de vinculação de ação de evento
Baterias incluídas — Inclui integração com bash, zsh, fish, Vim e Neovim
Gostaria de agradecer a todos os patrocinadores deste projeto que me possibilitam continuar a melhorar o fzf.
Se você gostaria de patrocinar este projeto, visite https://github.com/sponsors/junegunn.
Instalação
Usando Homebrew
Pacotes Linux
Pacotes do Windows
Usando git
Versões binárias
Configurando a integração do shell
Plug-in Vim/Neovim
Atualizando fzf
Construindo fzf
Uso
--modo --height
--tmux
modo
Usando o localizador
Modos de exibição
Sintaxe de pesquisa
Variáveis de ambiente
Opções
Demonstração
Exemplos
Atalhos de teclas para linha de comando
Conclusão difusa para bash e zsh
Arquivos e diretórios
IDs de processo
Nomes de host
Variáveis de ambiente/aliases
Configurações
Comandos suportados
Conclusão difusa personalizada
Plug-in Vim
Tópicos avançados
1. Atualize a lista de processos pressionando CTRL-R
2. Alterne entre fontes pressionando CTRL-D ou CTRL-F
3. Integração ripgrep interativa
Desempenho
Executando programas externos
Transformando-se em um processo diferente
Recarregando a lista de candidatos
Janela de visualização
Pré-visualizar uma imagem
Pontas
Respeitando .gitignore
Casca de peixe
Parque temático fzf
Projetos relacionados
Licença
Você pode usar o Homebrew (no macOS ou Linux) para instalar o fzf.
preparar instalar fzf
Importante
Para configurar a integração do shell (ligações de teclas e preenchimento difuso), consulte as instruções abaixo.
fzf também está disponível via MacPorts: sudo port install fzf
Gerenciador de pacotes | Distribuição Linux | Comando |
---|---|---|
APK | Alpino Linux | sudo apk add fzf |
APTO | Debian 9+/Ubuntu 19.10+ | sudo apt install fzf |
Conda | conda install -c conda-forge fzf | |
DNF | Fedora | sudo dnf install fzf |
Nix | NixOS, etc. | nix-env -iA nixpkgs.fzf |
Pacman | Arco Linux | sudo pacman -S fzf |
pacote | FreeBSD | pkg install fzf |
pacote | NetBSD | pkgin install fzf |
pkg_add | OpenBSD | pkg_add fzf |
Portagem | Gentoo | emerge --ask app-shells/fzf |
Spack | spack install fzf | |
XBPS | Anular Linux | sudo xbps-install -S fzf |
Zíper | openSUSE | sudo zypper install fzf |
Importante
Para configurar a integração do shell (ligações de teclas e preenchimento difuso), consulte as instruções abaixo.
No Windows, o fzf está disponível via Chocolatey, Scoop, Winget e MSYS2:
Gerenciador de pacotes | Comando |
---|---|
Chocolate | choco install fzf |
Colher | scoop install fzf |
Asa | winget install fzf |
MSYS2 (pacman) | pacman -S $MINGW_PACKAGE_PREFIX-fzf |
Alternativamente, você pode "git clonar" este repositório em qualquer diretório e executar o script de instalação.
git clone --profundidade 1 https://github.com/junegunn/fzf.git ~/.fzf~/.fzf/install
O script de instalação adicionará linhas ao arquivo de configuração do shell para modificar $PATH
e configurar a integração do shell.
Você pode baixar os binários oficiais do fzf na página de lançamentos.
https://github.com/junegunn/fzf/releases
Adicione a seguinte linha ao seu arquivo de configuração do shell.
festa
# Configure as combinações de teclas fzf e a avaliação de conclusão difusa "$(fzf --bash)"
zsh
# Configurar combinações de teclas fzf e fonte de conclusão difusa <(fzf --zsh)
peixe
# Configure as teclas fzffzf --fish | fonte
Observação
As opções --bash
, --zsh
e --fish
estão disponíveis apenas no fzf 0.48.0 ou posterior. Se você tiver uma versão mais antiga do fzf ou quiser um controle mais preciso, poderá obter arquivos de script individuais no diretório /shell. A localização dos arquivos pode variar dependendo do gerenciador de pacotes que você usa. Consulte a documentação do pacote para obter mais informações. (por exemplo, apt show fzf
)
Dica
Você pode desativar a ligação CTRL-T ou ALT-C definindo FZF_CTRL_T_COMMAND
ou FZF_ALT_C_COMMAND
como uma string vazia ao fornecer o script. Por exemplo, para desativar a ligação ALT-C:
bash: FZF_ALT_C_COMMAND= eval "$(fzf --bash)"
zsh: FZF_ALT_C_COMMAND= source <(fzf --zsh)
peixe: fzf --fish | FZF_ALT_C_COMMAND= source
Definir as variáveis após obter o script não terá efeito.
Se você usa o vim-plug, adicione isto ao seu arquivo de configuração do Vim:
Conecte 'junegunn/fzf', { 'do': { -> fzf#install() } } Conecte 'junegunn/fzf.vim'
junegunn/fzf
fornece as funções básicas da biblioteca
fzf#install()
garante que você tenha o binário mais recente
junegunn/fzf.vim
é um projeto separado que fornece uma variedade de comandos úteis
Para saber mais sobre a integração do Vim, consulte README-VIM.md.
Dica
Se você usa Neovim e prefere plugins baseados em Lua, dê uma olhada em fzf-lua.
O fzf está sendo desenvolvido ativamente e você pode querer atualizá-lo de vez em quando. Siga as instruções abaixo dependendo do método de instalação usado.
git: cd ~/.fzf && git pull && ./install
preparar: brew update; brew upgrade fzf
macports: sudo port upgrade fzf
achocolatado: choco upgrade fzf
vim-plug: :PlugUpdate fzf
Consulte CONSTRUIR.md.
fzf iniciará o localizador interativo, lerá a lista de STDIN e gravará o item selecionado em STDOUT.
encontrar * -tipo f | fzf > selecionado
Sem o canal STDIN, o fzf percorrerá o sistema de arquivos no diretório atual para obter a lista de arquivos.
vim $(fzf)
Observação
Você pode substituir o comportamento padrão
Ou definindo $FZF_DEFAULT_COMMAND
para um comando que gera a lista desejada
Ou definindo as opções --walker
, --walker-root
e --walker-skip
em $FZF_DEFAULT_OPTS
Aviso
Uma solução mais robusta seria usar xargs
mas apresentamos o acima porque é mais fácil de entender
fzf --print0 | xargs -0 -o vim
Dica
fzf também tem a capacidade de se transformar em um processo diferente.
fzf --bind 'enter:tornar-se(vim {})'
Consulte Transformando-se em um processo diferente para obter mais informações.
CTRL-K
/ CTRL-J
(ou CTRL-P
/ CTRL-N
) para mover o cursor para cima e para baixo
Tecla Enter
para selecionar o item, CTRL-C
/ CTRL-G
/ ESC
para sair
No modo de seleção múltipla ( -m
), TAB
e Shift-TAB
para marcar vários itens
Atalhos de teclas estilo Emacs
Mouse: rolar, clicar, clicar duas vezes; shift-clique e shift-scroll no modo de seleção múltipla
Por padrão, o fzf é executado no modo de tela cheia, mas existem outros modos de exibição.
--height
Com --height HEIGHT[%]
, fzf começará abaixo do cursor com a altura fornecida.
fzf --altura 40%
layout reverse
e --border
combinam bem com esta opção.
fzf --height 40% --layout reverso --border
Ao acrescentar ~
à altura, você está definindo a altura máxima.
# Levará o mínimo de linhas possível para exibir o listseq 3 | fzf --altura ~100% sequência 3000 | fzf --altura ~100%
O valor da altura pode ser um número negativo.
# Altura da tela - 3fzf --height -3
--tmux
modo Com a opção --tmux
, o fzf será iniciado em um pop-up do tmux.
# --tmux [center|top|bottom|left|right][,SIZE[%]][,SIZE[%]]fzf --tmux center # Center, 50% largura e alturafzf --tmux 80% # Center, 80% de largura e alturafzf --tmux 100%,50% # Centro, 100% de largura e 50% de alturafzf --tmux left,40% # Left, 40% largurafzf --tmux esquerda,40%,90% # Esquerda, 40% largura, 90% alturafzf --tmux superior,40% # Superior, 40% alturafzf --tmux inferior,80%,40% # Inferior, 80 % altura, 40% altura
--tmux
é ignorado silenciosamente quando você não está no tmux.
Observação
Se você estiver preso a uma versão antiga do tmux que não suporta pop-up ou se quiser abrir o fzf em um painel tmux normal, verifique o script fzf-tmux.
Dica
Você pode adicionar essas opções a $FZF_DEFAULT_OPTS
para que sejam aplicadas por padrão. Por exemplo,
# Abra no pop-up do tmux se estiver no tmux, caso contrário use --height modeexport FZF_DEFAULT_OPTS='--height 40% --tmux bottom,40% --layout reverse --border top'
A menos que especificado de outra forma, o fzf inicia no "modo de pesquisa estendida", onde você pode digitar vários termos de pesquisa delimitados por espaços. por exemplo ^music .mp3$ sbtrkt !fire
Símbolo | Tipo de correspondência | Descrição |
---|---|---|
sbtrkt | correspondência difusa | Itens que correspondem sbtrkt |
'wild | correspondência exata (citada) | Itens que incluem wild |
'wild' | correspondência exata de limite (entre aspas em ambas as extremidades) | Itens que incluem wild nos limites das palavras |
^music | correspondência exata de prefixo | Itens que começam com music |
.mp3$ | correspondência exata de sufixo | Itens que terminam com .mp3 |
!fire | correspondência inversa exata | Itens que não incluem fire |
!^music | correspondência exata de prefixo inverso | Itens que não começam com music |
!.mp3$ | correspondência exata de sufixo inverso | Itens que não terminam com .mp3 |
Se você não prefere correspondência difusa e não deseja "citar" cada palavra, inicie fzf com a opção -e
ou --exact
. Observe que quando --exact
é definido, '
-prefix "tira aspas" do termo.
Um termo de caractere de barra única atua como um operador OR. Por exemplo, a consulta a seguir corresponde a entradas que começam com core
e terminam com go
, rb
ou py
.
^core go$ | rb$ | py$
FZF_DEFAULT_COMMAND
Comando padrão a ser usado quando a entrada é tty
por exemplo, export FZF_DEFAULT_COMMAND='fd --type f'
FZF_DEFAULT_OPTS
Opções padrão
por exemplo, export FZF_DEFAULT_OPTS="--layout=reverse --inline-info"
FZF_DEFAULT_OPTS_FILE
Se você preferir gerenciar opções padrão em um arquivo, defina esta variável para apontar para o local do arquivo
por exemplo, export FZF_DEFAULT_OPTS_FILE=~/.fzfrc
Aviso
FZF_DEFAULT_COMMAND
não é usado pela integração do shell devido à pequena diferença nos requisitos.
CTRL-T
executa $FZF_CTRL_T_COMMAND
para obter uma lista de arquivos e diretórios
ALT-C
executa $FZF_ALT_C_COMMAND
para obter uma lista de diretórios
vim ~/**
executa fzf_compgen_path()
com o prefixo ( ~/
) como primeiro argumento
cd foo**
executa fzf_compgen_dir()
com o prefixo ( foo
) como primeiro argumento
As opções disponíveis são descritas posteriormente neste documento.
Consulte a página de manual ( man fzf
) para obter a lista completa de opções.
Se você aprender assistindo a vídeos, confira este screencast de @samoshkin para explorar os recursos fzf
.
Página Wiki de exemplos
Isenção de responsabilidade: os exemplos nesta página são mantidos pela comunidade e não foram exaustivamente testados
Exemplos avançados de fzf
Ao configurar a integração do shell, você pode usar as seguintes combinações de teclas em bash, zsh e fish.
CTRL-T
– Cole os arquivos e diretórios selecionados na linha de comando
Você pode substituir o comportamento definindo FZF_CTRL_T_COMMAND
para um comando personalizado que gera a lista desejada
Ou você pode definir opções --walker*
em FZF_CTRL_T_OPTS
A lista é gerada usando a opção --walker file,dir,follow,hidden
Defina FZF_CTRL_T_OPTS
para passar opções adicionais para fzf
# Visualize o conteúdo do arquivo usando bat (https://github.com/sharkdp/bat)export FZF_CTRL_T_OPTS=" --walker-skip .git,node_modules,target --preview 'bat -n --color=always {}' - -bind 'ctrl-/:alterar-visualização-janela(para baixo|oculto|)'"
Pode ser desabilitado configurando FZF_CTRL_T_COMMAND
para uma string vazia ao obter o script
CTRL-R
– Cole o comando selecionado do histórico na linha de comando
Se você quiser ver os comandos em ordem cronológica, pressione CTRL-R
novamente, o que alterna a classificação por relevância
Pressione CTRL-/
ou ALT-/
para alternar a quebra de linha
Defina FZF_CTRL_R_OPTS
para passar opções adicionais para fzf
# CTRL-Y para copiar o comando para a área de transferência usando pbcopyexport FZF_CTRL_R_OPTS=" --bind 'ctrl-y:execute-silent(echo -n {2..} | pbcopy)+abort' --color header:italic --header 'Pressione CTRL-Y para copiar o comando para a área de transferência'"
ALT-C
- cd no diretório selecionado
Ou você pode definir opções --walker-*
em FZF_ALT_C_OPTS
A lista é gerada usando a opção --walker dir,follow,hidden
Defina FZF_ALT_C_COMMAND
para substituir o comando padrão
Defina FZF_ALT_C_OPTS
para passar opções adicionais para fzf
# Imprime a estrutura da árvore na janela de visualizaçãoexport FZF_ALT_C_OPTS=" --walker-skip .git,node_modules,target --preview 'tree -C {}'"
Pode ser desabilitado configurando FZF_ALT_C_COMMAND
para uma string vazia ao obter o script
Os modos de exibição para essas ligações podem ser configurados separadamente por meio de FZF_{CTRL_T,CTRL_R,ALT_C}_OPTS
ou globalmente por meio de FZF_DEFAULT_OPTS
. (por exemplo, FZF_CTRL_R_OPTS='--tmux bottom,60% --height 60% --border top'
)
Mais dicas podem ser encontradas na página wiki.
A conclusão difusa para arquivos e diretórios pode ser acionada se a palavra antes do cursor terminar com a sequência de acionamento, que é por padrão **
.
COMMAND [DIRECTORY/][FUZZY_PATTERN]**
# Arquivos no diretório atual# - Você pode selecionar vários itens com TAB keyvim **# Arquivos no diretório paivim ../** # Arquivos no diretório pai que correspondem a `fzf`vim ../fzf* * # Arquivos em seu diretório inicialvim ~/** # Diretórios no diretório atual (seleção única)cd ** # Diretórios em ~/github que correspondem a `fzf`cd ~/github/fzf**
A conclusão difusa para PIDs é fornecida para o comando kill.
# Pode selecionar vários processos com keykillou -9 **
Para comandos ssh e telnet, é fornecido preenchimento difuso para nomes de host. Os nomes são extraídos de /etc/hosts e ~/.ssh/config.
ssh **telnet **
não definido **exportar ** unalias **
# Use ~~ como a sequência de gatilho em vez do padrão **export FZF_COMPLETION_TRIGGER='~~'# Opções para fzf commandexport FZF_COMPLETION_OPTS='--border --info=inline'# Use fd (https://github.com/ sharkdp/fd) para listar os candidatos ao caminho.# - O primeiro argumento para a função ($1) é o caminho base para iniciar a travessia# - Veja o código fonte (conclusão.{bash,zsh}) para os detalhes._fzf_compgen_path() { fd --hidden --follow --exclude ".git" . "$1"}# Use fd para gerar a lista do diretóriocomplete_fzf_compgen_dir() { fd --type d --hidden --follow --exclude ".git" . "$1"}# Personalização avançada de opções fzf via _fzf_comprun function# - O primeiro argumento da função é o nome do comando.# - Você deve passar o resto dos argumentos para fzf._fzf_comprun() { comando local =$1 mudança case "$command" incd) fzf --preview 'tree -C {} | cabeça -200' "$@" ;; exportar|desdefinir) fzf --preview "eval 'echo $'{}" "$@" ;; ssh) fzf --preview 'dig {}' "$@" ;;*) fzf --preview 'bat -n --color=always {}' "$@" ;; esac}
No bash, a conclusão difusa é habilitada apenas para um conjunto predefinido de comandos ( complete | grep _fzf
para ver a lista). Mas você também pode habilitá-lo para outros comandos usando a função auxiliar _fzf_setup_completion
.
# uso: _fzf_setup_completion path|dir|var|alias|host COMMANDS..._fzf_setup_completion path ag git kubectl Árvore do diretório _fzf_setup_completion
(A API de preenchimento personalizado é experimental e está sujeita a alterações)
Para um comando chamado "COMMAND" , defina a função _fzf_complete_COMMAND
usando o auxiliar _fzf_complete
.
# Conclusão difusa personalizada para o comando "doge"# por exemplo, doge **_fzf_complete_doge() { _fzf_complete --multi --reverse --prompt="doge> " -- "$@" < <( echo muito echo uau echo tal echo doge )}
Os argumentos anteriores --
são as opções para fzf.
Depois de --
, simplesmente passe os argumentos de conclusão originais inalterados ( "$@"
).
Em seguida, escreva um conjunto de comandos que gere os candidatos de conclusão e alimente sua saída para a função usando substituição de processo ( < <(...)
).
O zsh selecionará automaticamente a função usando a convenção de nomenclatura, mas no bash você terá que associar manualmente a função ao comando usando o comando complete
.
[ -n "$BASH"] && completo -F _fzf_complete_doge -o padrão -o bashdefault doge
Se você precisar pós-processar a saída do fzf, defina _fzf_complete_COMMAND_post
da seguinte maneira.
_fzf_complete_foo() { _fzf_complete --multi --reverse --header-lines=3 -- "$@" < <( ls -al )}_fzf_complete_foo_post() { awk '{imprimir $NF}'} [ -n "$BASH"] && completo -F _fzf_complete_foo -o padrão -o bashdefault foo
Consulte README-VIM.md.
fzf é rápido. O desempenho não deve ser um problema na maioria dos casos de uso. No entanto, você pode querer estar ciente das opções que podem afetar o desempenho.
--ansi
diz ao fzf para extrair e analisar códigos de cores ANSI na entrada e torna a digitalização inicial mais lenta. Portanto, não é recomendado adicioná-lo ao $FZF_DEFAULT_OPTS
.
--nth
torna o fzf mais lento porque precisa tokenizar cada linha.
--with-nth
torna o fzf mais lento, pois o fzf precisa tokenizar e remontar cada linha.
Você pode configurar combinações de teclas para iniciar processos externos sem sair do fzf ( execute
, execute-silent
).
# Pressione F1 para abrir o arquivo com less sem sair do fzf# Pressione CTRL-Y para copiar a linha para a área de transferência e abortar fzf (requer pbcopy)fzf --bind 'f1:execute(less -f {}),ctrl-y: execute-silent(echo {} | pbcopy)+abortar'
Consulte a seção KEY BINDINGS da página de manual para obter detalhes.
become(...)
é semelhante a execute(...)
/ execute-silent(...)
descrito acima, mas em vez de executar o comando e voltar para fzf ao concluir, ele transforma fzf em um novo processo para o comando.
fzf --bind 'enter:tornar-se(vim {})'
Comparada com a substituição de comando aparentemente equivalente vim "$(fzf)"
, esta abordagem tem várias vantagens:
O Vim não abrirá um arquivo vazio quando você encerrar o fzf com CTRL-C
O Vim não abrirá um arquivo vazio quando você pressionar ENTER em um resultado vazio
Pode lidar com múltiplas seleções mesmo quando há espaços em branco
fzf --multi --bind 'enter:tornar-se(vim {+})'
Para ser justo, execute fzf --print0 | xargs -0 -o vim
em vez de vim "$(fzf)"
resolve todos os problemas mencionados. No entanto, become(...)
ainda oferece benefícios adicionais em diferentes cenários.
Você pode configurar várias ligações para lidar com o resultado de maneiras diferentes, sem qualquer script de quebra
fzf --bind 'enter:tornar-se(vim {}),ctrl-e:tornar-se(emacs {})'
Anteriormente, você teria que usar --expect=ctrl-e
e verificar a primeira linha da saída do fzf
Você pode criar facilmente o comando subsequente usando as expressões de índice de campo de fzf
# Abra o arquivo no Vim e vá para o linegit grep --line-number . |fzf --delimitador: --nth 3.. --bind 'enter:tornar-se(vim {1} +{2})'
Ao vincular a ação reload
a uma chave ou evento, você pode fazer com que o fzf recarregue dinamicamente a lista de candidatos. Consulte #1750 para obter mais detalhes.
ps -ef | fzf --bind 'ctrl-r:recarregar(ps -ef)' --header 'Pressione CTRL-R para recarregar' --header-lines=1 --height=50% --layout=reverso
FZF_DEFAULT_COMMAND='encontrar. -tipo f' fzf --bind 'ctrl-d:recarregar(encontrar. -tipo d),ctrl-f:recarregar(eval "$FZF_DEFAULT_COMMAND")' --height=50% --layout=reverso
O exemplo a seguir usa fzf como interface seletora para ripgrep. Limitamos a ação reload
ao evento change
, portanto, toda vez que você digitar fzf, o processo ripgrep será reiniciado com a string de consulta atualizada indicada pela expressão de espaço reservado {q}
. Além disso, observe que usamos a opção --disabled
para que fzf não execute nenhuma filtragem secundária.
: | rg_prefix='rg --column --line-number --no-heading --color=always --smart-case' fzf --bind 'start:reload:$rg_prefix ""' --bind 'alterar:recarregar:$rg_prefix {q} || verdadeiro' --bind 'enter:tornar-se(vim {1} +{2})' --ansi --desativado --height=50% --layout=reverso
Se o ripgrep não encontrar nenhuma correspondência, ele sairá com um status de saída diferente de zero e o fzf irá avisá-lo sobre isso. Para suprimir a mensagem de aviso, adicionamos || true
para o comando, para que ele sempre saia com 0.
Consulte "Usando fzf como iniciador Ripgrep interativo" para exemplos mais sofisticados.
Quando a opção --preview
é definida, fzf inicia automaticamente um processo externo com a linha atual como argumento e mostra o resultado na janela dividida. Seu $SHELL
é usado para executar o comando com $SHELL -c COMMAND
. A janela pode ser rolada usando o mouse ou combinações de teclas personalizadas.
# {} é substituído pela string entre aspas simples da linha em focofzf --preview 'cat {}'
A janela de visualização suporta cores ANSI, portanto você pode usar qualquer programa que destaque a sintaxe do conteúdo de um arquivo, como Bat ou Highlight:
fzf --preview 'bat --color = sempre {}' --preview-window '~3'
Você pode personalizar o tamanho, a posição e a borda da janela de visualização usando a opção --preview-window
, e a cor de primeiro e segundo plano dela com a opção --color
. Por exemplo,
fzf --height 40% --layout reverso --info inline --border --preview 'arquivo {}' --preview-window up,1,border-horizontal --bind 'ctrl-/:alterar janela de visualização(50%|oculto|)' --color 'fg:#bbccdd,fg+:#ddeeff,bg:#334455,preview-bg:#223344,border:#778899'
Consulte a página de manual ( man fzf
) para obter a lista completa de opções.
Exemplos mais avançados podem ser encontrados aqui.
Aviso
Como fzf é um filtro de texto de uso geral em vez de um localizador de arquivos, não é uma boa ideia adicionar a opção --preview
ao seu $FZF_DEFAULT_OPTS
.
#*********************# **NÃO FAÇA ISSO! **# *********************exportar FZF_DEFAULT_OPTS='--preview "bat --style=números --color=always --line-range :500 {}"'# bat não funciona com nenhuma entrada diferente da lista de arquivosps -ef | fzf sequência 100 | história fzf | fzf
fzf pode exibir imagens na janela de visualização usando um dos seguintes protocolos:
Protocolo gráfico Kitty
Protocolo de imagens inline iTerm2
Seisel
Consulte o script bin/fzf-preview.sh para obter mais informações.
fzf --preview 'fzf-preview.sh {}'
.gitignore
Você pode usar fd, ripgrep ou o Silver Searcher para percorrer o sistema de arquivos respeitando .gitignore
.
# Insira a saída de fd em fzffd --type f --strip-cwd-prefix | fzf# Configurando fd como a fonte padrão para fzfexport FZF_DEFAULT_COMMAND='fd --type f --strip-cwd-prefix'# Agora fzf (sem pipe) usará o comando fd para gerar a listafzf# Para aplicar o comando a CTRL-T também exporta FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
Se você deseja que o comando siga links simbólicos e não exclua arquivos ocultos, use o seguinte comando:
exportar FZF_DEFAULT_COMMAND='fd --type f --strip-cwd-prefix --hidden --follow --exclude .git'
A ligação da tecla CTRL-T
de fish, ao contrário das de bash e zsh, usará o último token na linha de comando como o diretório raiz para a pesquisa recursiva. Por exemplo, pressionar CTRL-T
no final da seguinte linha de comando
ls /var/
listará todos os arquivos e diretórios em /var/
.
Ao usar um FZF_CTRL_T_COMMAND
personalizado, use a variável $dir
não expandida para usar esse recurso. $dir
tem como padrão .
quando o último token não é um diretório válido. Exemplo:
set -g FZF_CTRL_T_COMMAND "comando find -L $dir -type f 2> /dev/null | sed '1d; s#^./##'"
fzf Theme Playground criado por Vitor Mello é uma página onde você pode criar temas fzf de forma interativa.
https://github.com/junegunn/fzf/wiki/Related-projects
A Licença MIT (MIT)
Direitos autorais (c) 2013-2024 Junegunn Choi