dotfiles/zsh/.aliases
Josh Sherman 3b1a3404d6
Expand comments, make arguments verbose, consolidate
On this kick of making sure my dotfiles are an easy to follow living
document, so I'm removing any shorthand, writing better comments, and
added bonus, I consolidated some of the redundant OS checks.
2024-06-24 13:06:09 -05:00

86 lines
2.4 KiB
Text

# Starts with a clean slate
unalias -a
# Prompt when doing something destructive
alias cp='cp --interactive'
alias mv='mv --interactive'
alias rm='rm --interactive'
# Colorize output, make ls human-readable and add classification indicators
if [[ `uname` == Darwin ]]; then
# macOS
alias dircolors='gdircolors'
alias ls='gls --color=auto --human-readable --classify'
# Force uuidgen to use lowercase letters like Linux
alias uuidgen='uuidgen | tr A-F a-f'
else
# Linux
alias ls='ls --color=auto --human-readable --classify'
# Use the same open command as macOS
alias open='xdg-open'
fi
# Run ls immediately after cd
function cd { builtin cd "$@" && ls }
# Use bat instead of cat for syntax highlighting
if command -v apt-get &> /dev/null; then
# Debian
alias cat='batcat'
else
# Everybody else
alias cat='bat'
fi
# Make disk utility human-readable
alias df='df --human-readable'
alias du='du --human-readable'
# Colorize grep output and add some exclusions
alias grep="grep --color=auto --exclude-dir={.git,artwork,node_modules,vendor}"
# Use HTTPie in place of the old libwww-perl commands
alias GET='http'
alias POST='http POST'
alias HEAD='http HEAD'
# Get the git branch name for the current directory (used in the prompt)
git_current_branch() {
(command git symbolic-ref -q HEAD || command git name-rev --name-only --no-undefined --always HEAD) 2> /dev/null
}
# Get the default branch name for the current directory (usually master or main)
git_default_branch() {
(git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@') 2> /dev/null
}
# Git aliases
alias g='git'
alias ga='git add'
alias gaa='git add --all'
alias gb='git branch'
alias gc='git commit'
alias gca='git commit -a'
alias gcam='git commit -a --amend'
alias gcb='git checkout -b'
alias gcl='git clone'
alias gcm='git checkout $(git_default_branch)'
alias gco='git checkout'
alias fgco='git checkout $(git branch | sed "s/\*//" | fzf)'
alias gd='git diff'
alias gds='git diff --staged'
alias gf='git fetch'
alias gfm='git fetch origin $(git_default_branch):$(git_default_branch)'
alias gl='git pull origin $(git_current_branch)'
alias glg='git log'
alias gm='git merge'
alias gmm='git merge $(git_default_branch)'
alias gmv='git mv'
alias gp='git push origin $(git_current_branch)'
alias gpf='git push origin $(git_current_branch) --force'
alias grb='git rebase'
alias grbm='git rebase $(git_default_branch)'
alias grm='git rm'
alias gst='git status'