Ligações de teclas bash padrão
Usando whereis fzf
, encontrei os arquivos do fzf para a integração do bash em usr/share/fzf
:
completion.bash
key-bindings.bash
Depois de source
ing os dois arquivos, isso habilita um par de atalhos para o bash: Por exemplo, eu posso pressionar Ctrl + t para procurar arquivos no diretório atual e Ctrl + r para pesquisar o histórico de comandos.
Para encontrar e mudar para um diretório, existe Alt + c .
Para tornar essas associações de chaves persistentes, adicionei-as ao meu .bashrc
:
source /usr/share/fzf/completion.bash && source /usr/share/fzf/key-bindings.bash
Personalização
Uma customização que acho útil está mostrando uma prévia do arquivo ao usar o fzf (eu coloquei isso no meu .bashrc
também):
# When selecting files with fzf, we show file content with syntax highlighting,
# or without highlighting if it's not a source file. If the file is a directory,
# we use tree to show the directory's contents.
# We only load the first 200 lines of the file which enables fast previews
# of large text files.
# Requires highlight and tree: pacman -S highlight tree
export FZF_DEFAULT_OPTS="--preview '(highlight -O ansi -l {} 2> /dev/null ||
cat {} || tree -C {}) 2> /dev/null | head -200'"
Conclusão do caminho
Fora da caixa, o fzf oferece suporte à conclusão de caminho difuso para alguns comandos codificados como cd
, ls
e vim
.
Por exemplo, inserir vim **
Tab no bash inicia uma busca difusa no diretório atual e abre o arquivo selecionado com Vim 1 .
Isso é muito útil, mas eu gostaria de abrir, por exemplo, PDFs da mesma maneira. Você pode ativar isso adicionando a seguinte linha a .bashrc
:
complete -o bashdefault -o default -F _fzf_path_completion zathura
Aqui, zathura é meu visualizador de PDF; você pode substituí-lo com o visualizador de documentos de sua escolha.
Observe que a conclusão do caminho difuso funciona para todos os caminhos, não apenas para o diretório atual:
vim ~/**
e, em seguida, pressionar a tecla Tab irá procurar um arquivo em seu diretório pessoal e, em seguida, abri-lo no Vim.
Integração com o Vim
Aqui estão alguns atalhos de teclado do meu .vimrc
para usar o fzf dentro de uma sessão do Vim:
" Search and switch buffers
nmap <leader>b :Buffers<cr>
" Find files by name under the current directory
nmap <leader>f :Files<cr>
" Find files by name under the home directory
nmap <leader>h :Files ~/<cr>
" Search content in the current file
nmap <leader>l :BLines<cr>
" Search content in the current file and in files under the current directory
nmap <leader>g :Ag<cr>
Pré-requisito para tudo o que é o plug-in fzf Vim ; Eu instalei com o Vundle colocando isso no meu .vimrc
:
Plugin 'junegunn/fzf.vim'
e depois chamando :PluginInstall
do Vim.
Aqui está uma lista dos comandos fzf que você pode chamar do Vim.
Indo mais longe
Para uma combinação poderosa de fzf, Vim e Tmux, confira post de blog de Keegan Lowenstein (eu tem a configuração --preview
de lá).
Aqui estão algumas idéias sobre como configurar a integração do shell do fzf.
Você pode encontrar mais exemplos de configuração do fzf em readme do fzf e em seu wiki .
1 Se você se deparar com arquivos de busca difusa e depois abri-los muito no Vim, você pode criar um atalho para isso usando este pedaço de .bashrc
.