# {{ ansible_managed }} # Fish shell configuration — deployed by cli_modern role if status is-interactive # ── Prompt ────────────────────────────────────────────── {% if cli_modern_install_starship %} starship init fish | source {% endif %} # ── Navigation ────────────────────────────────────────── {% if cli_modern_install_zoxide %} zoxide init fish | source {% endif %} {% if cli_modern_install_fzf %} # fzf.fish plugin handles keybindings (Ctrl+R history, Ctrl+F files) # Set fzf default options set -gx FZF_DEFAULT_OPTS "--height 40% --layout=reverse --border --info=inline" {% endif %} # ── Aliases ───────────────────────────────────────────── {% if cli_modern_install_eza %} alias ls "eza --icons --group-directories-first" alias ll "eza -la --icons --group-directories-first --git" alias lt "eza --tree --level=2 --icons" {% endif %} {% if cli_modern_install_bat %} alias cat "bat --paging=never" alias catp "bat" {% endif %} # Git shortcuts alias gs "git status" alias gd "git diff" alias gl "git log --oneline -20" alias gp "git pull" # Docker shortcuts alias dc "docker compose" alias dps "docker ps --format 'table {{ '{{' }}.Names{{ '}}' }}\t{{ '{{' }}.Status{{ '}}' }}\t{{ '{{' }}.Ports{{ '}}' }}'" alias dlogs "docker compose logs -f" # Safety nets alias rm "rm -i" alias mv "mv -i" alias cp "cp -i" # ── Environment ───────────────────────────────────────── set -gx EDITOR vim set -gx VISUAL vim # Suppress Fish greeting set -g fish_greeting {% if cli_modern_install_fastfetch %} # ── System Info ───────────────────────────────────────── # Show machine identity on first shell in a login session. # Skips nested shells and non-login to keep things snappy. if status is-login fastfetch end {% endif %} end