Created
December 22, 2021 05:24
-
-
Save themagicalmammal/ead5fe3305f63ddfd871c80388cd98b8 to your computer and use it in GitHub Desktop.
My Zsh (Void Setup)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## Path section | |
# Set $PATH if ~/.local/bin exist | |
if [ -d "$HOME/.local/bin" ]; then | |
export PATH=$HOME/.local/bin:$PATH | |
fi | |
eval "$(starship init zsh)" | |
function set_win_title(){ | |
echo -ne "\033]0; $USER@$HOST:${PWD/$HOME/~} \007" | |
} | |
precmd_functions+=(set_win_title) | |
## Plugins section: Enable fish style features | |
# Use syntax highlighting | |
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh | |
# Use autosuggestion | |
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh | |
# Use history substring search | |
source /usr/share/zsh/plugins/zsh-history-substring-search/zsh-history-substring-search.zsh | |
# Use fzf | |
source /usr/share/fzf/key-bindings.zsh | |
source /usr/share/fzf/completion.zsh | |
# Arch Linux command-not-found support, you must have package pkgfile installed | |
# https://wiki.archlinux.org/index.php/Pkgfile#.22Command_not_found.22_hook | |
[[ -e /usr/share/doc/pkgfile/command-not-found.zsh ]] && source /usr/share/doc/pkgfile/command-not-found.zsh | |
# Advanced command-not-found hook | |
[[ -e /usr/share/doc/find-the-command/ftc.zsh ]] && source /usr/share/doc/find-the-command/ftc.zsh | |
## Options section | |
setopt correct # Auto correct mistakes | |
setopt extendedglob # Extended globbing. Allows using regular expressions with * | |
setopt nocaseglob # Case insensitive globbing | |
setopt rcexpandparam # Array expension with parameters | |
setopt nocheckjobs # Don't warn about running processes when exiting | |
setopt numericglobsort # Sort filenames numerically when it makes sense | |
setopt nobeep # No beep | |
setopt appendhistory # Immediately append history instead of overwriting | |
setopt histignorealldups # If a new command is a duplicate, remove the older one | |
setopt autocd # if only directory path is entered, cd there. | |
setopt auto_pushd | |
setopt pushd_ignore_dups | |
setopt pushdminus | |
# Completion. | |
autoload -Uz compinit | |
compinit | |
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' # Case insensitive tab completion | |
zstyle ':completion:*' rehash true # automatically find new executables in path | |
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" # Colored completion (different colors for dirs/files/etc) | |
zstyle ':completion:*' completer _expand _complete _ignored _approximate | |
zstyle ':completion:*' menu select | |
zstyle ':completion:*' select-prompt '%SScrolling active: current selection at %p%s' | |
zstyle ':completion:*:descriptions' format '%U%F{cyan}%d%f%u' | |
# Speed up completions | |
zstyle ':completion:*' accept-exact '*(N)' | |
zstyle ':completion:*' use-cache on | |
zstyle ':completion:*' cache-path ~/.cache/zcache | |
# automatically load bash completion functions | |
autoload -U +X bashcompinit && bashcompinit | |
HISTFILE=~/.zhistory | |
HISTSIZE=50000 | |
SAVEHIST=10000 | |
## Keys | |
# Use emacs key bindings | |
bindkey -e | |
# [PageUp] - Up a line of history | |
if [[ -n "${terminfo[kpp]}" ]]; then | |
bindkey -M emacs "${terminfo[kpp]}" up-line-or-history | |
bindkey -M viins "${terminfo[kpp]}" up-line-or-history | |
bindkey -M vicmd "${terminfo[kpp]}" up-line-or-history | |
fi | |
# [PageDown] - Down a line of history | |
if [[ -n "${terminfo[knp]}" ]]; then | |
bindkey -M emacs "${terminfo[knp]}" down-line-or-history | |
bindkey -M viins "${terminfo[knp]}" down-line-or-history | |
bindkey -M vicmd "${terminfo[knp]}" down-line-or-history | |
fi | |
# Start typing + [Up-Arrow] - fuzzy find history forward | |
if [[ -n "${terminfo[kcuu1]}" ]]; then | |
autoload -U up-line-or-beginning-search | |
zle -N up-line-or-beginning-search | |
bindkey -M emacs "${terminfo[kcuu1]}" up-line-or-beginning-search | |
bindkey -M viins "${terminfo[kcuu1]}" up-line-or-beginning-search | |
bindkey -M vicmd "${terminfo[kcuu1]}" up-line-or-beginning-search | |
fi | |
# Start typing + [Down-Arrow] - fuzzy find history backward | |
if [[ -n "${terminfo[kcud1]}" ]]; then | |
autoload -U down-line-or-beginning-search | |
zle -N down-line-or-beginning-search | |
bindkey -M emacs "${terminfo[kcud1]}" down-line-or-beginning-search | |
bindkey -M viins "${terminfo[kcud1]}" down-line-or-beginning-search | |
bindkey -M vicmd "${terminfo[kcud1]}" down-line-or-beginning-search | |
fi | |
# [Home] - Go to beginning of line | |
if [[ -n "${terminfo[khome]}" ]]; then | |
bindkey -M emacs "${terminfo[khome]}" beginning-of-line | |
bindkey -M viins "${terminfo[khome]}" beginning-of-line | |
bindkey -M vicmd "${terminfo[khome]}" beginning-of-line | |
fi | |
# [End] - Go to end of line | |
if [[ -n "${terminfo[kend]}" ]]; then | |
bindkey -M emacs "${terminfo[kend]}" end-of-line | |
bindkey -M viins "${terminfo[kend]}" end-of-line | |
bindkey -M vicmd "${terminfo[kend]}" end-of-line | |
fi | |
# [Shift-Tab] - move through the completion menu backwards | |
if [[ -n "${terminfo[kcbt]}" ]]; then | |
bindkey -M emacs "${terminfo[kcbt]}" reverse-menu-complete | |
bindkey -M viins "${terminfo[kcbt]}" reverse-menu-complete | |
bindkey -M vicmd "${terminfo[kcbt]}" reverse-menu-complete | |
fi | |
# [Backspace] - delete backward | |
bindkey -M emacs '^?' backward-delete-char | |
bindkey -M viins '^?' backward-delete-char | |
bindkey -M vicmd '^?' backward-delete-char | |
# [Delete] - delete forward | |
if [[ -n "${terminfo[kdch1]}" ]]; then | |
bindkey -M emacs "${terminfo[kdch1]}" delete-char | |
bindkey -M viins "${terminfo[kdch1]}" delete-char | |
bindkey -M vicmd "${terminfo[kdch1]}" delete-char | |
else | |
bindkey -M emacs "^[[3~" delete-char | |
bindkey -M viins "^[[3~" delete-char | |
bindkey -M vicmd "^[[3~" delete-char | |
bindkey -M emacs "^[3;5~" delete-char | |
bindkey -M viins "^[3;5~" delete-char | |
bindkey -M vicmd "^[3;5~" delete-char | |
fi | |
typeset -g -A key | |
if (( ${+terminfo[smkx]} && ${+terminfo[rmkx]} )); then | |
autoload -Uz add-zle-hook-widget | |
function zle_application_mode_start { echoti smkx } | |
function zle_application_mode_stop { echoti rmkx } | |
add-zle-hook-widget -Uz zle-line-init zle_application_mode_start | |
add-zle-hook-widget -Uz zle-line-finish zle_application_mode_stop | |
fi | |
# Control Left - go back a word | |
key[Control-Left]="${terminfo[kLFT5]}" | |
if [[ -n "${key[Control-Left]}" ]]; then | |
bindkey -M emacs "${key[Control-Left]}" backward-word | |
bindkey -M viins "${key[Control-Left]}" backward-word | |
bindkey -M vicmd "${key[Control-Left]}" backward-word | |
fi | |
# Control Left - go forward a word | |
key[Control-Right]="${terminfo[kRIT5]}" | |
if [[ -n "${key[Control-Right]}" ]]; then | |
bindkey -M emacs "${key[Control-Right]}" forward-word | |
bindkey -M viins "${key[Control-Right]}" forward-word | |
bindkey -M vicmd "${key[Control-Right]}" forward-word | |
fi | |
# Alt Left - go back a word | |
key[Alt-Left]="${terminfo[kLFT3]}" | |
if [[ -n "${key[Alt-Left]}" ]]; then | |
bindkey -M emacs "${key[Alt-Left]}" backward-word | |
bindkey -M viins "${key[Alt-Left]}" backward-word | |
bindkey -M vicmd "${key[Alt-Left]}" backward-word | |
fi | |
# Control Right - go forward a word | |
key[Alt-Right]="${terminfo[kRIT3]}" | |
if [[ -n "${key[Alt-Right]}" ]]; then | |
bindkey -M emacs "${key[Alt-Right]}" forward-word | |
bindkey -M viins "${key[Alt-Right]}" forward-word | |
bindkey -M vicmd "${key[Alt-Right]}" forward-word | |
fi | |
# Awesome Alias | |
## System commands | |
alias _='sudo' | |
alias ls='ls --color=auto' | |
alias tarnow='tar -acf' | |
alias untar='tar -zxvf' | |
alias wget='wget -c' | |
alias psmem='ps auxf | sort -nr -k 4' | |
alias psmem10='ps auxf | sort -nr -k 4 | head -10' | |
alias ..='cd ..' | |
alias ...='cd ../..' | |
alias ....='cd ../../..' | |
alias .....='cd ../../../..' | |
alias ......='cd ../../../../..' | |
alias dir='dir --color=auto' | |
alias vdir='vdir --color=auto' | |
alias grep='grep --color=auto' | |
alias fgrep='fgrep --color=auto' | |
alias egrep='egrep --color=auto' | |
alias diff='diff --color=auto' | |
alias clrk='sudo vkpurge rm all' | |
## Improved commands | |
alias ls='lsd --group-dirs first' | |
alias lt='lsd --tree' | |
alias top='htop' | |
alias cat='bat --pager=never --theme=ansi' | |
alias catf='bat --theme=ansi' | |
## XBPS | |
alias xu='sudo xbps-install -Suv' | |
alias xi='sudo xbps-install' | |
alias xr='sudo xbps-remove -Rcon' | |
alias xfr='sudo xbps-remove -Rcon -F' | |
alias xl='xbps-query -l' | |
alias xf='xl | grep' | |
alias xs='xbps-query -Rs' | |
alias xd='xbps-query -x' | |
## Flatpak | |
alias fu='flatpak update' | |
alias fi='flatpak install' | |
alias ff='flatpak repair' | |
alias fs='flatpak search' | |
alias fl='flatpak list' | |
alias fr='flatpak uninstall --delete-data' | |
alias fc='flatpak uninstall –-unused' | |
### alias fe='flatpak uninstall --all' | |
## Nix | |
alias nu='nix-env -u' | |
alias nf='nix-env --query' | |
alias na='nix-env --query "*"' | |
alias ni='nix-env -i' | |
alias nr='nix-env -e' | |
alias ns='nix search' | |
alias no='nix-env --rollback' | |
alias ncl='nix-channel --list' | |
alias nca='nix-channel --add' | |
alias ncu='nix-channel --update' | |
## Specials | |
alias b='bleachbit' | |
alias be='_ bleachbit' | |
alias fre='sudo fc-cache -f -v && fc-cache -f -v' | |
alias cu='xu && nu && fu' | |
## System Controls | |
alias halt='sudo halt' | |
alias poweroff='sudo poweroff' | |
alias reboot='sudo reboot' | |
alias shutdown='sudo shutdown' | |
alias zzz='sudo zzz' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Requirements
Also you need my starship config.