workstation-ansible/roles/cli_modern/templates/config.fish.j2
2026-04-23 12:40:21 -04:00

67 lines
2.3 KiB
Django/Jinja

# {{ 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