workstation-ansible/roles/cli_modern/templates/config.fish.j2

58 lines
1.9 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
end