Layout and Display Options
Beyond height and border, fzf offers fine-grained control over how its interface is presented.
Header and Label
--header
Static informational text shown at the top of the list:
ls | fzf --header "Select a file to edit (Ctrl+/ for preview)"
# Multi-line header
ls | fzf --header $'Open: Enter\nDelete: Ctrl+D\n'
--header-lines
Use the first N lines of the input as a fixed header (useful for columnar data):
# Keep the ps column names frozen at the top
ps aux | fzf --header-lines=1
# Keep 2 header lines from a table file
cat report.tsv | fzf --header-lines=2
--border-label
Text inside the border:
ls | fzf --border=rounded --border-label=" Files" --border-label-pos=3
# Dynamic label with --bind
ls | fzf \
--border=rounded \
--border-label=" Files" \
--bind 'focus:change-border-label( {})'
Separator and Scrollbar
# Custom separator line between header and results
fzf --separator='─'
fzf --separator='━'
fzf --no-separator # hide separator
# Scrollbar characters
fzf --scrollbar='▌' # default
fzf --scrollbar='│'
fzf --no-scrollbar
Gap (Space Between Items)
fzf --gap # add one blank line between each result
fzf --gap=2 # 2 blank lines between results
Useful when results are dense and hard to visually distinguish.
Tabstop
fzf --tabstop=4 # tab characters align to every 4 columns (default: 8)
Ellipsis
fzf --ellipsis='…' # character shown when text is truncated
fzf --ellipsis='..'
Highlight Mode
# How matched characters are highlighted
fzf --highlight-line # highlight the entire selected line (not just chars)
--input-label and --list-label
Separate labels for the input area and the list (fzf 0.60+):
ls | fzf \
--input-label='Query' \
--list-label='Files' \
--border=rounded
Combining Options for a Polished UI
A fully styled fzf invocation
find . -type f | fzf \
--height=60% \
--layout=reverse \
--border=rounded \
--border-label=" File Picker" \
--border-label-pos=3 \
--margin=1,2 \
--padding=1 \
--prompt=" " \
--pointer="▶ " \
--marker="✓ " \
--info=right \
--separator="─" \
--scrollbar="▌" \
--header=$'Ctrl+/: preview Ctrl+A: select all\n' \
--preview='bat --color=always --style=numbers {}' \
--preview-window='right:60%:hidden' \
--bind='ctrl-/:toggle-preview' \
--bind='ctrl-a:select-all'