Files
dotfiles/home/executable_dot_bash_aliases.tmpl
Xevion 005b2ed850 feat: add Fish function wrappers for copilot suggest/explain commands
Replace gh copilot aliases with custom Fish functions that provide better help
text and wrap the copilot CLI with appropriate prompts
2025-12-30 00:26:22 -06:00

204 lines
6.2 KiB
Cheetah

# Controlled by chezmoi
# System
alias sctl='systemctl'
alias sctlu='systemctl --user'
alias jctl='journalctl'
alias sup='sudo apt update'
alias sug='sudo apt upgrade'
alias supg='sudo apt update && sudo apt upgrade'
alias supgy='sudo apt update && sudo apt upgrade -y'
alias sai='sudo apt install'
alias saa='sudo apt autoremove'
alias sdr='sudo systemctl daemon-reload'
alias sn='sudo micro'
alias sv='sudo nvim'
# Core aliases
alias ll='ls -AlFh'
alias la='ls -Ah'
alias l='ls -CF'
alias nano='micro'
alias lg='lazygit'
alias vim='nvim'
alias chlg='lazygit --path ~/.local/share/chezmoi'
alias es='exec $SHELL'
# Chezmoi
alias cha='chezmoi apply'
alias chai='chezmoi apply --interactive'
alias ch='chezmoi'
alias cdc='chezmoi cd'
# Remote Management
alias romanlog="ssh roman 'tail -F /var/log/syslog' --lines 100"
# Other aliases
alias oc='opencode'
alias ocs='opencode --model anthropic/claude-sonnet-4-5'
alias oco='opencode --model anthropic/claude-opus-4-5'
alias och='opencode --model anthropic/claude-haiku-4-5'
alias cl='claude'
alias cope='claude --model opus'
alias copes='claude --model sonnet'
alias copeh='claude --model haiku'
alias hcope='claude --model haiku'
alias gpt='chatgpt'
alias copilot='copilot'
alias suggest='copilot -p "suggest:" --allow-all-tools'
alias spt='spotify_player'
alias gitalias='alias | grep "git "'
alias mousefix='sudo udevadm trigger' # helped with mouse issues on laptop
alias rt='riptree'
alias tree='rt --compat'
# Clipboard aliases
{{ if not .wsl -}}
alias copy='xsel -ib'
alias paste='xsel -b'
alias cdp='cd $(xsel -b)'
{{- else -}}
alias copy='clip.exe'
alias paste='powershell.exe -noprofile Get-Clipboard'
alias cdp='cd $(xsel -b)'
{{- end }}
# fast chmod execute alias
function chfix() {
last_command=$(history | tail -n 1 | awk '{$1=""; sub(/^ /, ""); print $0}')
if [[ -f $last_command ]]; then
chmod +x $last_command
else
echo "Error: $last_command is not a valid file"
fi
}
# https://docs.gitignore.io/install/command-line
function gi() { curl -sL https://www.toptal.com/developers/gitignore/api/$@; }
function chcode() {
EDITOR="code --wait"
# If no arguments are provided, the chezmoi directory is opened
if [[ "$@" == *"--watch"* ]]; then
for arg in "$@"; do
if [[ ! $arg == -* ]]; then
chezmoi edit $@
return
fi
done
echo "--watch requires a file to be provided, directories aren't supported with watch mode"
fi
chezmoi edit $@
}
# Creates a temporary file with the given
function tempCode() {
if [ -z "$1" ]; then
echo "Must provide filetype argument (ex: py, .xml, html)"
else
# Remove preceding dot, then re-add to support both '.py' and 'py' as arguments
EXTENSION=$(echo $1 | sed 's/^\.//')
TEMP_FILE=$(mktemp "/tmp/XXXXXXXXXXXX_$(uuidgen).$EXTENSION")
echo "Temporary $1 file created at $TEMP_FILE"
code --file-uri "file://$TEMP_FILE"
fi
}
# Alias to disable/enable bluetooth connection to Galaxy Buds
budsAddress="60:3A:AF:75:61:80"
alias budsOff="bluetoothctl block $budsAddress"
alias budsOn="bluetoothctl unblock $budsAddress && bluetoothctl connect $budsAddress"
# Alias to disable/enable bluetooth connection to Bose QC45s
maestroAddress="AC:BF:71:66:FE:B2"
alias maestroOff="bluetoothctl block $maestroAddress"
alias maestroOn="bluetoothctl unblock $maestroAddress && bluetoothctl connect $maestroAddress"
function lastRuns() {
if [ -z "$1" ]; then RUNS=10; else RUNS=$1; fi
gh run list -L $RUNS --json name,url | jq -c '.[] | [.name, .url] | join(" ")' -r
}
# Touches a file while also creating the parent directory (and any other necessary directories) in order to do so.
mktouch() { mkdir -p $(dirname $1) && touch $1; }
# When in the appropriate KiTTy terminal, use the SSH kitten
[ "$TERM" = "xterm-kitty" ] && alias ssh="kitty +kitten ssh"
# Git aliases
alias ga='git add'
alias gaa='git add .'
alias gaaa='git add --all'
alias gau='git add --update'
alias gb='git branch'
alias gbd='git branch --delete '
alias gc='git commit'
alias gcm='git commit --message'
alias gcf='git commit --fixup'
alias gco='git checkout'
alias gcob='git checkout -b'
alias gcom='git checkout master'
alias gcos='git checkout staging'
alias gcod='git checkout develop'
alias gd='git diff'
alias gda='git diff HEAD'
# alias gi='git init'
alias glg='git log --graph --oneline --decorate --all'
alias gld='git log --pretty=format:"%h %ad %s" --date=short --all'
alias gm='git merge --no-ff'
alias gma='git merge --abort'
alias gmc='git merge --continue'
alias gp='git pull'
alias gpr='git pull --rebase'
alias gr='git rebase'
alias gs='git status'
alias gss='git status --short'
alias gst='git stash'
alias gsta='git stash apply'
alias gstd='git stash drop'
alias gstl='git stash list'
alias gstp='git stash pop'
alias gsts='git stash save'
# Git log find by commit message
function glf() { git log --all --grep="$1"; }
# fzf abbreviation/alias search
if command -v fzf-abbr-search.ts &> /dev/null && command -v fzf &> /dev/null; then
fzf_search_abbr() {
local result key selected
result=$(fzf-abbr-search.ts | fzf \
--ansi \
--height=50% \
--reverse \
--delimiter=$'\t' \
--with-nth=4 \
--nth=1,2 \
--prompt='Aliases > ' \
--preview='echo {2}' \
--preview-window=up:3:wrap \
--expect='tab' \
--header='Enter: insert name | Tab: insert expansion')
if [ -n "$result" ]; then
# First line is key, second line is selected
key=$(echo "$result" | head -n1)
selected=$(echo "$result" | tail -n1)
if [ -n "$selected" ]; then
if [ "$key" = "tab" ]; then
# Insert expansion (field 2)
READLINE_LINE="${READLINE_LINE:0:$READLINE_POINT}$(echo "$selected" | cut -f2)${READLINE_LINE:$READLINE_POINT}"
else
# Insert name (field 1)
READLINE_LINE="${READLINE_LINE:0:$READLINE_POINT}$(echo "$selected" | cut -f1)${READLINE_LINE:$READLINE_POINT}"
fi
fi
fi
}
# Bind to Alt+A
bind -x '"\ea": fzf_search_abbr'
fi