fzf preview s bat

Moderní CLI: kompletní setup a integrace s fzftags:

Arch Linux CZ2 min

Díl 6 ze 6 — Moderní CLI

V předchozích dílech jsme si prošli eza, bat, fd a ripgrep. Každý zvlášť je fajn, ale síla přichází, když je propojíš. V tomhle díle si ukážeme kompletní setup, aliasy a integraci s fzf – tou pravou třešničkou.

Instalace celé sady

sudo pacman -S eza bat fd ripgrep fzf

Bonusově doporučuji:

sudo pacman -S ttf-jetbrains-mono-nerd    # font s ikonami pro eza
sudo pacman -S zoxide                      # náhrada cd (bonus)
sudo pacman -S starship                    # moderní prompt (bonus)

Aliasy do ~/.zshrc

Zkopíruj celý blok:

# ===== Moderní CLI aliasy =====

# eza (ls)
alias ls='eza --icons --group-directories-first'
alias ll='eza -la --icons --git --group-directories-first'
alias la='eza -a --icons --group-directories-first'
alias lt='eza --tree --level=2 --icons'
alias llt='eza -la --tree --level=2 --icons --git'

# bat (cat)
alias cat='bat --paging=never'
alias catp='bat'

# fd (find)
alias find='fd'

# ripgrep (grep)
alias grep='rg'

# pomůcky
alias diff='diff --color=auto'

Aplikuj:

source ~/.zshrc

Environment proměnné

Přidej na začátek ~/.zshrc:

# ===== ENV pro moderní CLI =====

# man stránky přes bat
export MANPAGER="sh -c 'col -bx | bat -l man -p'"
export MANROFFOPT="-c"

# ripgrep config
export RIPGREP_CONFIG_PATH=~/.config/ripgrep/config

# bat téma (pokud používáš catppuccin nebo jiné)
export BAT_THEME="Catppuccin Mocha"

fzf – integrace se vším

fzf (fuzzy finder) je nástroj, který sám o sobě nedělá nic, ale spojený s ostatními je magie.

Základní setup fzf

# aktivace v zsh
source /usr/share/fzf/completion.zsh
source /usr/share/fzf/key-bindings.zsh

Klávesové zkratky, které teď fungují:

  • Ctrl+R – interaktivní procházení historie příkazů
  • Ctrl+T – vložit soubor do aktuálního příkazu
  • Alt+C – interaktivní cd

fzf s fd (Ctrl+T a Alt+C)

Aby fzf používal fd místo pomalého find:

# do ~/.zshrc
export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git'
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
export FZF_ALT_C_COMMAND='fd --type d --hidden --follow --exclude .git'

fzf s bat pro preview

export FZF_CTRL_T_OPTS="--preview 'bat --color=always --style=numbers --line-range=:500 {}'"
export FZF_ALT_C_OPTS="--preview 'eza --tree --icons --level=2 {}'"

Teď při Ctrl+T vidíš obsah souboru vpravo, při Alt+C stromový výpis složky.

Killer combos

Otevři soubor ve VSCodium fuzzy výběrem

alias fv='codium $(fzf --preview "bat --color=always {}")'

Grep + fzf + náhled

frg() {
  local match
  match=$(rg --line-number --no-heading --color=always "$@" \
    | fzf --ansi --delimiter=: \
          --preview 'bat --color=always {1} --highlight-line {2}' \
          --preview-window '+{2}-/2')
  [ -n "$match" ] && echo "$match" | awk -F: '{print $1 " +" $2}' | xargs -o vim
}

Použití: frg TODO – vyhledá TODO ve všech souborech, ukáže preview, po Enteru otevře ve vim na správném řádku.

Rychlý přechod do gitového projektu

alias proj='cd $(fd -t d -H "^\.git$" ~/projekty | xargs dirname | fzf)'

zoxide – bonus (náhrada cd)

zoxide si pamatuje, kam chodíš, a nabízí zkrácené cesty:

sudo pacman -S zoxide

# aktivace v ~/.zshrc
eval "$(zoxide init zsh)"

Použití:

z projekty              # cd tam, kam si pamatuje
z arch                  # ~/git_archlinuxcz/...
zi                      # interaktivní výběr z historie

Kompletní ~/.zshrc snippet

Můj setup, který můžeš rovnou zkopírovat:

# ===== Moderní CLI: kompletní setup =====

# --- Environment ---
export MANPAGER="sh -c 'col -bx | bat -l man -p'"
export MANROFFOPT="-c"
export BAT_THEME="Catppuccin Mocha"
export RIPGREP_CONFIG_PATH=~/.config/ripgrep/config

# --- fzf ---
source /usr/share/fzf/completion.zsh
source /usr/share/fzf/key-bindings.zsh

export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git'
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
export FZF_ALT_C_COMMAND='fd --type d --hidden --follow --exclude .git'
export FZF_CTRL_T_OPTS="--preview 'bat --color=always --style=numbers --line-range=:500 {}'"
export FZF_ALT_C_OPTS="--preview 'eza --tree --icons --level=2 {}'"
export FZF_DEFAULT_OPTS="--height 40% --layout=reverse --border"

# --- Aliasy ---
alias ls='eza --icons --group-directories-first'
alias ll='eza -la --icons --git --group-directories-first'
alias la='eza -a --icons --group-directories-first'
alias lt='eza --tree --level=2 --icons'
alias llt='eza -la --tree --level=2 --icons --git'
alias cat='bat --paging=never'
alias catp='bat'
alias find='fd'
alias grep='rg'
alias diff='diff --color=auto'

# --- zoxide (bonus) ---
eval "$(zoxide init zsh)"

# --- Funkce ---
frg() {
  local match
  match=$(rg --line-number --no-heading --color=always "$@" \
    | fzf --ansi --delimiter=: \
          --preview 'bat --color=always {1} --highlight-line {2}' \
          --preview-window '+{2}-/2')
  [ -n "$match" ] && echo "$match" | awk -F: '{print $1 " +" $2}' | xargs -o vim
}

Trilium poznámka na závěr

Hoď si celou tuhle konfiguraci do jedné poznámky v Trilium Notes. Když přejdeš na nový stroj nebo reinstaluješ Arch, máš to po ruce jedním copy-paste.

Alternativa je chezmoi pro správu dotfiles přes git – ten si zaslouží samostatný článek.

Shrnutí série

Prošli jsme čtyři hlavní moderní CLI nástroje:

  • eza – hezčí ls s git statusem
  • bat – cat se zvýrazněním syntaxe
  • fd – jednodušší a rychlejší find
  • ripgrep – nejrychlejší grep

Plus fzf jako lepidlo, které z nich udělá jeden produktivní workflow.

Původní Unix nástroje neuklízíme – zůstávají v systému a stále je používáme ve skriptech a přes \alias bypass. Ale interaktivně? Zpět už se nevrátíš.

Až budeš mít další nápady na sérii (třeba zoxide, starship, atuin, delta), dej vědět – nebo je klidně napiš sám a pošli na fedi, rád je sdílím dál.

Komentáře