zsh: add zoxide/bat/delta, starship prompt config, extra history options; rewrite README
Bootstrap (zshrc-bootstrap.zsh): - Add bat and zoxide to the cross-distro install loop - Add git-delta install block (package is 'git-delta' on every PM but binary is 'delta', mirroring the starship/lazydocker pattern) - Debian/Ubuntu compat: symlink batcat->bat and fdfind->fd into ~/.local/bin so zshrc integrations work under both names - Bump ZSHRC_BOOTSTRAP_VERSION 2 -> 3 so existing machines re-run the bootstrap and auto-install the new tools zshrc: - Add setopts HIST_VERIFY, EXTENDED_HISTORY, AUTO_PUSHD, PUSHD_IGNORE_DUPS, PUSHD_SILENT - Self-configuring tool integrations (all behind command -v guards): - zoxide: eval $(zoxide init zsh) for frecent 'z'/'zi' dir jumping - bat: alias cat->bat, BAT_THEME, colored MANPAGER via bat - delta: GIT_PAGER=delta for prettier git diff/log/show - Extend the interactive auto-update block to also sync starship.toml to ~/.config/starship.toml (overwrite-if-changed, validated the same way as zshrc); keep the reproducible/self-configuring design - Inverted hyperlink fix already landed in prior commit; no change here starship.toml (new): - Two-line prompt: directory + git status + cmd duration on line 1, arrow (red on error) on line 2; Nerd Font symbols, SSH host/user, Python/Node/Rust/Go/Java/Docker context blocks - Validated clean with starship 1.21.1 (uses [nodejs], not [node]) README.md: - Full rewrite: documents the design philosophy, all files, deps, integrations, history options, aliases, keybindings, the eza hyperlink workaround rationale, auto-update behavior, per-machine overrides, env vars, and helper functions
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
# Starship prompt configuration - managed by the zshrc repo.
|
||||
# Local edits to ~/.config/starship.toml are overwritten on the next interactive
|
||||
# shell start (reproducible/self-configuring design). Uses Nerd Font symbols
|
||||
# (JetBrainsMono Nerd Font is installed by the tmux config).
|
||||
|
||||
command_timeout = 1000
|
||||
add_newline = true
|
||||
|
||||
# Two-line prompt:
|
||||
# line 1: directory + git status + command duration
|
||||
# line 2: the input arrow (red on error)
|
||||
format = """
|
||||
$directory\
|
||||
$git_branch\
|
||||
$git_status\
|
||||
$cmd_duration\
|
||||
$line_break\
|
||||
$character\
|
||||
"""
|
||||
|
||||
[character]
|
||||
success_symbol = "[➜](bold green)"
|
||||
error_symbol = "[✗](bold red)"
|
||||
vimcmd_symbol = "[V](bold green)"
|
||||
|
||||
[directory]
|
||||
truncation_length = 3
|
||||
truncate_to_repo = true
|
||||
style = "bold blue"
|
||||
read_only = " "
|
||||
read_only_style = "red"
|
||||
repo_root_style = "bold cyan"
|
||||
|
||||
[git_branch]
|
||||
symbol = " "
|
||||
style = "bold purple"
|
||||
format = "[$symbol$branch]($style) "
|
||||
|
||||
[git_status]
|
||||
style = "bold red"
|
||||
conflicted = "=${count}"
|
||||
ahead = "⇡${count}"
|
||||
behind = "⇣${count}"
|
||||
diverged = "⇕↑${ahead_count}↓${behind_count}"
|
||||
untracked = "?${count}"
|
||||
stashed = " *${count}"
|
||||
modified = " !${count}"
|
||||
staged = " +${count}"
|
||||
renamed = " »${count}"
|
||||
deleted = " ✘${count}"
|
||||
format = '([$all_status$ahead_behind]($style) )'
|
||||
|
||||
[cmd_duration]
|
||||
min_time = 2000
|
||||
format = "took [$duration](bold yellow) "
|
||||
|
||||
[status]
|
||||
disabled = false
|
||||
format = '[$symbol]($style)'
|
||||
symbol = "✗ "
|
||||
success_symbol = ""
|
||||
style = "bold red"
|
||||
|
||||
[username]
|
||||
show_always = false
|
||||
style_user = "bold yellow"
|
||||
style_root = "bold red"
|
||||
format = "[$user]($style)@"
|
||||
|
||||
[hostname]
|
||||
ssh_only = true
|
||||
style = "bold green"
|
||||
format = "[$hostname]($style) "
|
||||
|
||||
[python]
|
||||
symbol = " "
|
||||
format = '[${symbol}${pyenv_prefix}(${version})(\($virtualenv\))]($style) '
|
||||
|
||||
[nodejs]
|
||||
symbol = " "
|
||||
format = "[$symbol($version)]($style) "
|
||||
|
||||
[rust]
|
||||
symbol = " "
|
||||
format = "[$symbol($version)]($style) "
|
||||
|
||||
[golang]
|
||||
symbol = " "
|
||||
format = "[$symbol($version)]($style) "
|
||||
|
||||
[java]
|
||||
symbol = " "
|
||||
format = "[$symbol($version)]($style) "
|
||||
|
||||
[docker_context]
|
||||
symbol = " "
|
||||
format = "[$symbol$context]($style) "
|
||||
|
||||
[shell]
|
||||
disabled = true
|
||||
style = "bold cyan"
|
||||
Reference in New Issue
Block a user