# fzf Cheatsheet - Cheatsheets - Launch Pad

__ _______________________ _________._________________________ \_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / \/ \/ \/ \/ \/ \/ \/

# fzf Cheatsheet

← Back to cheatsheets

← Home

fzf (fuzzy finder) is a command-line fuzzy finder for filtering and selecting from lists. Extremely fast and versatile for navigating files, command history, and more.

## Basic Usage

- fzf - Fuzzy find from stdin

- ls | fzf - Fuzzy find from file list

- find . -type f | fzf - Fuzzy find from find results

- fzf <dir> - Fuzzy find files in directory

## Interactive Commands

- Ctrl+C, Esc - Exit

- Enter - Select and exit

- Tab - Select multiple items (multi-select)

- Shift+Tab - Unselect

- Up/Down Arrow or Ctrl+P/N - Navigate up/down

- Page Up/Down or Ctrl+V/B - Navigate page up/down

- Alt+Up/Down - Navigate half page up/down

- Ctrl+A - Select all

- Ctrl+D - Deselect all

- Ctrl+T - Toggle all

- Ctrl+L - Clear input

- ? - Toggle preview window

- Alt+W - Toggle preview wrap

- Alt+? - Toggle help

## Search Patterns

- `word` - Match lines containing word

- `'word` - Exact match (disables fuzzy matching)

- `^word` - Prefix match (starts with word)

- `word$` - Suffix match (ends with word)

- `!word` - Negation (exclude lines with word)

- `'word1 | 'word2` - OR operator

- `word1 word2` - AND operator (both must match)

## Preview Window

- fzf --preview='cat {}' - Preview file contents

- fzf --preview='head -100 {}' - Preview first 100 lines

- fzf --preview='ls -lah {}' - Preview file details

- fzf --preview-window=right:40% - Custom preview window size

- fzf --preview-window=hidden - Hide preview initially

- ? - Toggle preview (in fzf)

## Common Use Cases

### File Navigation

- fzf - Find files in current directory

- find . -type f | fzf - Find all files recursively

- fzf --type f - Files only

- fzf --type d - Directories only

### Command History

- history | fzf - Search command history

- Ctrl+R - fzf search through history (if configured)

### Process Selection

- ps aux | fzf - Search and select process

- ps aux | fzf | awk '{print $2}' - Get PID from selection

### Git Operations

- git log --oneline | fzf - Browse git commits

- git branch | fzf - Select branch

- git stash list | fzf - Select stash

## Shell Integration

### Bash/Zsh Key Bindings

Add to `~/.bashrc` or `~/.zshrc`:

    # Use fzf for Ctrl+R history search
    if command -v fzf >/dev/null 2>&1; then
        source /usr/share/fzf/shell/key-bindings.bash  # or .zsh
    fi

After setup:

- Ctrl+R - Search command history

- Ctrl+T - Find and insert file path

- Alt+C - Change directory (cd)

### Fish Shell

    fzf_key_bindings

## Useful Aliases

Add to your shell config:

    # File operations
    alias fcd='cd $(find . -type d | fzf)'
    alias fvim='vim $(fzf)'
    alias fcat='cat $(fzf)'

    # Git with fzf
    alias fco='git checkout $(git branch | fzf | sed "s/^..//")'

    # Process kill
    alias fkill='kill -9 $(ps aux | fzf | awk "{print \$2}")'

## Advanced Options

- fzf --height 40% - Set height

- fzf --reverse - Reverse layout (top to bottom)

- fzf --border - Show border

- fzf --header='Select file:' - Custom header

- fzf --multi - Enable multi-select

- fzf --bind='ctrl-a:select-all' - Custom key bindings

- fzf --exact - Exact match mode

- fzf --extended - Extended search mode (default)

## Configuration

### Config File Location

- `~/.fzfrc` - fzf configuration

- `~/.fzf.bash` - Bash integration (if installed)

- `~/.fzf.zsh` - Zsh integration (if installed)

- `/usr/share/fzf/` - Default installation directory

### Example Configuration

    # fzf options
    export FZF_DEFAULT_OPTS='--height 40% --reverse --border'
    export FZF_DEFAULT_COMMAND='fd --type f'  # Use fd instead of find
    export FZF_CTRL_T_COMMAND='fd --type f'
    export FZF_CTRL_T_OPTS='--preview "bat --color=always --style=numbers {}"'

## Tips

- Use single quotes `'word'` for exact matches when fuzzy matching fails

- Combine with other tools using pipes: `find . | fzf | xargs vim`

- Use preview window to see file contents before selecting

- Configure shell bindings for Ctrl+R, Ctrl+T, Alt+C

- Use multi-select (Tab) to select multiple files

- Install ripgrep or fd for faster file finding with fzf

- Customize colors and layout with FZF_DEFAULT_OPTS

- Use fzf in scripts for interactive selection

- Combine with vim (fzf.vim plugin) for file navigation

- Great for browsing logs: `tail -f /var/log/syslog | fzf`

← Back to cheatsheets

← Home