Add Fish Alias
Create a new fish shell function/alias in Juliet dotfiles.
Process
- •
Create function file
codesymlinked/config/fish/functions/aliases/<name>.fish
- •
Write the function
fishfunction <name> --wraps "<wrapped-command>" <wrapped-command> $argv end - •
Reload fish (or open new terminal)
bashsource ~/.config/fish/config.fish
File Naming
- •Filename = function name (e.g.,
g.fishdefinesgfunction) - •Use lowercase, hyphens for multi-word names
- •Files are auto-loaded alphabetically
Patterns
Simple Wrapper
fish
function g --wraps "git"
git $argv
end
Wrapper with Auto-Install
fish
function nv --wraps "neovide"
if ! command -v neovide 2&> /dev/null
gum confirm "Neovide not installed. Install?" && brew install --cask neovide
end
neovide $argv
end
Function with Subcommand Aliases
fish
function pv --wraps "pipenv"
switch $argv[1]
case "i"
set argv[1] install
end
pipenv $argv
end
Interactive Function (using gum)
fish
function clone
set -l provider (gum choose --header "Source?" github gitlab)
# ... rest of logic
end
Multiple Functions in One File
Group related functions (e.g., git.fish contains ga, gl, gm, commit, etc.)
Conventions
- •Use
--wrapsfor tab completion inheritance - •Use
$argvto pass all arguments - •Use
gumfor interactive prompts (confirm, choose, input, spin) - •Helper functions:
log,error,debuglog(defined in fish config)
Common Mistakes
- •Forgetting
--wraps(loses tab completion) - •Using
$@instead of$argv(bash syntax, not fish) - •Creating in wrong directory (must be in
symlinked/config/fish/functions/aliases/)