107 lines
4.1 KiB
Bash
107 lines
4.1 KiB
Bash
#! /bin/zsh
|
||
SHELL=$(which zsh || echo '/bin/zsh')
|
||
|
||
setopt autocd # change directory just by typing its name
|
||
setopt interactivecomments # allow comments in interactive mode
|
||
setopt magicequalsubst # enable filename expansion for arguments of the form ‘anything=expression’
|
||
setopt nonomatch # hide error message if there is no match for the pattern
|
||
setopt notify # report the status of background jobs immediately
|
||
setopt numericglobsort # sort filenames numerically when it makes sense
|
||
setopt promptsubst # enable command substitution in prompt
|
||
setopt MENU_COMPLETE # Automatically highlight first element of completion menu
|
||
setopt AUTO_LIST # Automatically list choices on ambiguous completion.
|
||
setopt COMPLETE_IN_WORD # Complete from both ends of a word.
|
||
|
||
# enable completion features
|
||
autoload -Uz compinit
|
||
compinit -i
|
||
|
||
zstyle ':completion:*:*:*:*:*' menu select
|
||
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' # case insensitive tab completion
|
||
|
||
zstyle ':completion:*' use-cache on
|
||
zstyle ':completion:*' cache-path "$HOME/.config/zsh/.zcompcache"
|
||
|
||
# Define completers
|
||
zstyle ':completion:*' completer _extensions _complete _approximate
|
||
|
||
zstyle ':completion:*:*:*:*:corrections' format '%F{yellow}!- %d (errors: %e) -!%f'
|
||
zstyle ':completion:*:*:*:*:descriptions' format '%F{blue}-- %D %d --%f'
|
||
zstyle ':completion:*:*:*:*:messages' format ' %F{purple} -- %d --%f'
|
||
zstyle ':completion:*:*:*:*:warnings' format ' %F{red}-- no matches found --%f'
|
||
|
||
zstyle ':completion:*' group-name ''
|
||
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
|
||
|
||
# Only display some tags for the command cd
|
||
zstyle ':completion:*:*:cd:*' tag-order local-directories directory-stack path-directories
|
||
|
||
# History configurations
|
||
HISTFILE="$HOME/.cache/.zsh_history"
|
||
HISTSIZE=10000
|
||
SAVEHIST=20000
|
||
setopt hist_expire_dups_first # delete duplicates first when HISTFILE size exceeds HISTSIZE
|
||
setopt hist_ignore_dups # ignore duplicated commands history list
|
||
setopt hist_ignore_space # ignore commands that start with space
|
||
setopt hist_verify # show command with history expansion to user before running it
|
||
setopt share_history # share command history data
|
||
|
||
# source plugins
|
||
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
||
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
|
||
source /usr/share/fzf/key-bindings.zsh
|
||
|
||
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#484E5B,underline"
|
||
|
||
# tty
|
||
if [ "$TERM" = "linux" ] ; then
|
||
echo -en "\e]P0232323"
|
||
fi
|
||
|
||
# custom function
|
||
toppy() {
|
||
history | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n 21
|
||
}
|
||
|
||
cd() {
|
||
builtin cd "$@" && command ls --group-directories-first --color=auto -F
|
||
}
|
||
|
||
# alias
|
||
alias grub-update='sudo grub-mkconfig -o /boot/grub/grub.cfg'
|
||
alias mirror-update='sudo reflector --verbose -c Indonesia -c Japan -c Singapore --sort rate --save /etc/pacman.d/mirrorlist'
|
||
alias mtar='tar -zcvf' # mtar <archive_compress>
|
||
alias utar='tar -zxvf' # utar <archive_decompress> <file_list>
|
||
alias z='zip -r' # z <archive_compress> <file_list>
|
||
alias uz='unzip' # uz <archive_decompress> -d <dir>
|
||
alias sr='source ~/.zshrc'
|
||
alias ..="cd .."
|
||
mcd () {
|
||
mkdir -p $1
|
||
cd $1
|
||
}
|
||
alias psg="ps aux | grep -v grep | grep -i -e VSZ -e"
|
||
alias mkdir="mkdir -p"
|
||
alias fm='ranger'
|
||
alias pacs="pacman -Slq | fzf -m --preview 'cat <(pacman -Si {1}) <(pacman -Fl {1} | awk \"{print \$2}\")' | xargs -ro sudo pacman -S"
|
||
alias yays="yay -Slq | fzf -m --preview 'cat <(yay -Si {1}) <(yay -Fl {1} | awk \"{print \$2}\")' | xargs -ro yay -S"
|
||
alias pacr="pacman -Qq | fzf --multi --preview 'pacman -Qi {1}' | xargs -ro sudo pacman -Rns"
|
||
alias p="pacman -Q | fzf"
|
||
alias wifi="nmtui-connect"
|
||
alias ls="exa --color=auto --icons"
|
||
alias l="ls -l"
|
||
alias la="ls -a"
|
||
alias lla="ls -la"
|
||
alias lt="ls --tree"
|
||
alias cat="bat --color always --plain"
|
||
alias grep='grep --color=auto'
|
||
alias v='nvim'
|
||
alias mv='mv -v'
|
||
alias cp='cp -vr'
|
||
alias rm='rm -vr'
|
||
|
||
# init starship
|
||
eval "$(starship init zsh)"
|
||
# setup starship custom prompt
|
||
export STARSHIP_CONFIG=$HOME/.config/starship/starship.toml
|