C1 — Command Shadows
Disabling __fish_config_op_aliases restores standard system behavior for
all of these commands.
| Command / Alias | Active behavior | Disabled fallback |
|---|---|---|
ls |
eza -l -a --icons --hyperlink |
system ls |
cat |
bat syntax-highlighted; dirs → ls | /usr/bin/cat |
cd |
zoxide frecency-based navigation |
fish builtin cd |
rm |
moves files to trash (recoverable) | command rm (permanent) |
less |
$PAGER → ov → less → more → cat |
system less |
du |
duf (disk overview) or dust (dir tree) | system du |
top |
btop resource monitor |
system top |
ping |
prettyping --nolegend animation |
system ping |
ssh |
kitten ssh in Kitty terminal |
system ssh |
rg |
rg --hyperlink-format=kitty |
system rg |
mkdir |
verbose path-tree display on creation | mkdir -p silently |
bash |
XDG bashrc + $SHELL reset on exit |
system bash |
cp / mv |
forced -i confirmation prompt |
cp / mv unmodified |
wget |
forced --continue (resume downloads) |
system wget |
grep/fgrep/egrep |
forced --color=auto |
system grep variants |
dir / vdir |
forced --color=auto |
system dir / vdir |
help config |
intercepts “help config” → config-help |
fish builtin help |
claude |
auto-links AGENTS.md as CLAUDE.md before launch |
command claude |
edit |
multi-editor launcher (GUI/term + fallbacks) | $EDITOR/nvim/nano/vi |
When C1 is disabled, rm uses bare command rm with no wrapper — files
are permanently deleted, not trashed. There is no intermediate safety net.
history itself is never shadowed — every function in this config that
reads history depends on its stock builtin semantics. pretty-history
(same aliases-tricks toggle) is a separate command that prints history
with a timestamp prepended to every entry.
Sub-categories
Section titled “Sub-categories”__fish_config_op_aliases sub-divides into six sub-categories, each with
its own __fish_config_op_aliases_<slug> toggle:
filesystem
Section titled “filesystem”ls, cat, cd, du, mkdir, rm, mv, and cd/zoxide navigation –
the everyday filesystem-inspection and -modification shadows.
search
Section titled “search”rg, with its Kitty hyperlink formatting.
network
Section titled “network”ping, ssh, and yt-dlp – shadows that talk to the network.
monitor
Section titled “monitor”top -> btop.
shell-tools
Section titled “shell-tools”bash (XDG bashrc + $SHELL reset), less ($PAGER fallback chain),
and the help config interception.
dev-tools
Section titled “dev-tools”claude (AGENTS.md/CLAUDE.md auto-linking) and edit (multi-editor
launcher), plus agy.
For function authors
Section titled “For function authors”Calling one of these names bare from inside your own function means the
override runs whenever C1 (or its sub-category) is on — which may not be
what your function wants: a shadow can change stdout (cat’s syntax
highlighting, mkdir’s tree display), prompt interactively where none is
expected (cp/mv’s forced -i), or reshape output structurally (ls’s
icons/columns, rg’s hyperlink markers). If your function’s logic depends
on stock behavior, bypass the shadow deterministically, regardless of the
toggle state:
Shadow Bypass Why─────────────────────────────────────────────────────────────────────────ls, cat, rm, less, du, command <name> Real externaltop, ping, ssh, rg, binaries — amkdir, bash, cp, mv, real system commandwget, grep/fgrep/egrep, exists to falldir/vdir, claude back to.cd builtin cd The one true fish builtin in this table.help config __original_help $argv `help` is neither a builtin nor an external binary (embedded in the fish binary itself) — see conf.d/help.fish for why the wrapper keeps its own backup copy.edit (nothing to bypass to) Purely our own invention, no stock command exists. Call $EDITOR/$VISUAL yourself if you want a plain editor launch.A function’s own doc header records which of these it depends on: see the
CLASSIFICATION label (uses-shadow(...) / bypasses-shadow(...)),
documented in full at
docs/function-classification-schema.md.