dotfiles/sh/.config/sh/alias

132 lines
3.1 KiB
Bash

#!/usr/bin/env sh
#
# Global aliases for any shell
exist() { type "$1" >/dev/null 2>&1; }
# Avoid aliases which I did not create -- unalias EVERYTHING
unalias -a
# v shorthand for neovim
if exist nvim; then
alias v="nvim"
alias vim="nvim"
alias vs="nvim -c 'ScratchPad'" # open an empty 'scratchpad' which simply disappears after use
alias vw="nvim -c \"lua require 'zettelkasten'.index_open()\"" # open to personal wiki
elif exist vim; then
alias v="vim"
else
alias v="vi"
alias vim="vi"
fi
# open notes with my vim zettelkasten plugin
alias vn='v +"lua require \"zettelkasten\".index_open()"'
# exit shell mimicks vim
alias :q="exit"
# ls defaults
if exist exa; then
alias l="exa -l --git --git-ignore --group-directories-first"
alias L="exa -hal --grid --git --group-directories-first"
# a recursive tree
# - usually want to change levels recursed with -L2 -L3 or similar
alias ll="exa --tree -L2 --group-directories-first"
alias LL="exa -a --tree -L2 --group-directories-first"
alias lla="exa --tree --group-directories-first"
alias LLA="exa -a --tree --group-directories-first"
else
alias l="ls -lhF"
alias L="ls -lAhF"
fi
# cd defaults
alias ..="cd .."
alias ...="cd ../.."
alias ~="cd ~"
alias md="mkdir -p"
# clear my screen
alias cl="clear"
# Display current external ip address
alias myip="curl -s icanhazip.com"
# fzf
if exist fzf; then
# Display fuzzy-searchable history
alias fzfhistory="history -l -E -D 0 | fzf --tac --height 20"
fzman() {
man "$(apropos --long "$1" | fzf | awk '{print $2, $1}' | tr -d '()')"
}
# ripgrep-all to fzf search through any documents
if exist rga; then
fzrga() {
RG_PREFIX="rga --files-with-matches"
open "$(
FZF_DEFAULT_COMMAND="$RG_PREFIX '$1'" \
fzf --sort --preview="[[ ! -z {} ]] && rga --pretty --context 5 {q} {}" \
--phony -q "$1" \
--bind "change:reload:$RG_PREFIX {q}" \
--preview-window="70%:wrap"
)"
}
fi
# quickly fzy search a sqlite database result
if exist sqlite3; then
fzql() {
sqlite3 -header "$1" "$2" | fzf --header-lines=1 --layout=reverse --multi --prompt='fzql> '
}
fi
fi
# vifm
if exist vifm; then
alias vm=vifm
alias vmm='vifm ${PWD}'
fi
# default image viewer
if exist imv-folder; then
iv() {
if [ "$#" -eq 1 ] && [ -f "$1" ]; then
imv-folder "$1"
else
imv "$@"
fi
}
else
for cmd in imv nsxiv vimiv sxiv feh; do
# shellcheck disable=SC2139
# since we *want* it defined at definition
if exist "$cmd"; then alias iv="$cmd"; break; fi
done
fi
# python
if exist ptipython; then
alias py=ptipython
elif exist ipython; then
alias py=ipython
elif exist python; then
alias py=python
fi
# distrobox
if exist distrobox; then
alias db=distrobox
fi
if exist sc-im; then
alias sc=sc-im
fi
if exist tidy-viewer; then
tv() {
tidy-viewer -a -e "$@" | less -S -R
}
fi