92 lines
3.2 KiB
Bash
92 lines
3.2 KiB
Bash
export ZSH_HOME="$HOME/.zsh"
|
||
|
||
# source global shell alias & variables files
|
||
[[ ! -f ~/.zshenv ]] || source ~/.zshenv
|
||
|
||
# load modules
|
||
zmodload zsh/complist
|
||
autoload -U compinit && compinit
|
||
autoload -U colors && colors
|
||
# autoload -U tetris # main attraction of zsh, obviously
|
||
|
||
# cmp opts
|
||
zstyle ':completion:*' menu select # tab opens cmp menu
|
||
zstyle ':completion:*' special-dirs true # force . and .. to show in cmp menu
|
||
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} ma=0\;33 # colorize cmp menu
|
||
# zstyle ':completion:*' file-list true # more detailed list
|
||
zstyle ':completion:*' squeeze-slashes false # explicit disable to allow /*/ expansion
|
||
|
||
# main opts
|
||
setopt append_history inc_append_history share_history # better history
|
||
# on exit, history appends rather than overwrites; history is appended as soon as cmds executed; history shared across sessions
|
||
setopt auto_menu menu_complete # autocmp first menu match
|
||
setopt autocd # type a dir to cd
|
||
setopt auto_param_slash # when a dir is completed, add a / instead of a trailing space
|
||
setopt no_case_glob no_case_match # make cmp case insensitive
|
||
setopt globdots # include dotfiles
|
||
setopt extended_glob # match ~ # ^
|
||
setopt interactive_comments # allow comments in shell
|
||
unsetopt prompt_sp # don't autoclean blanklines
|
||
stty stop undef # disable accidental ctrl s
|
||
|
||
# history opts
|
||
HISTSIZE=1000000
|
||
SAVEHIST=1000000
|
||
HISTFILE="$XDG_CACHE_HOME/zsh_history" # move histfile to cache
|
||
HISTCONTROL=ignoreboth # consecutive duplicates & commands starting with space are not saved
|
||
|
||
fpath=(~/.zsh $fpath)
|
||
|
||
autoload run-help
|
||
|
||
# fzf setup
|
||
source <(fzf --zsh) # allow for fzf history widget
|
||
|
||
# binds
|
||
bindkey -e
|
||
|
||
# set up prompt
|
||
NEWLINE=$'\n'
|
||
PROMPT='%F{blue}%B%~%b%f %F{green}❯%f '
|
||
|
||
# load plugins
|
||
ZSH_PLUGINS_DIR="$ZSH_HOME/plugins"
|
||
[ -e "$ZSH_PLUGINS_DIR/colored-man-pages.plugin.zsh" ] && source "$ZSH_PLUGINS_DIR/colored-man-pages.plugin.zsh"
|
||
[ -e "$ZSH_PLUGINS_DIR/command-not-found-plugin.zsh" ] && source "$ZSH_PLUGINS_DIR/command-not-found-plugin.zsh"
|
||
[ -e "$ZSH_PLUGINS_DIR/zoxide.plugin.zsh" ] && source "$ZSH_PLUGINS_DIR/zoxide.plugin.zsh"
|
||
[ -e "$ZSH_PLUGINS_DIR/fzf-git.sh" ] && source "$ZSH_PLUGINS_DIR/fzf-git.sh"
|
||
[ -e "$ZSH_PLUGINS_DIR/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" ] && source "$ZSH_PLUGINS_DIR/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh"
|
||
[ -e "$ZSH_PLUGINS_DIR/zsh-autosuggestions/zsh-autosuggestions.zsh" ] && source "$ZSH_PLUGINS_DIR/zsh-autosuggestions/zsh-autosuggestions.zsh"
|
||
|
||
# define user aliases
|
||
pbcopy() {
|
||
if [ -f "$1" ]; then
|
||
mime_type=$(file --mime-type -b "$1")
|
||
wl-copy --type "$mime_type" < "$1"
|
||
else
|
||
printf "%s" "$*" | wl-copy
|
||
fi
|
||
}
|
||
|
||
alias pbpaste='wl-paste --no-newline'
|
||
alias ls='ls --color=auto --group-directories-first'
|
||
|
||
# Replace Vim implementation
|
||
alias vi='nvim'
|
||
alias vim='nvim'
|
||
|
||
# Replace grep command tool
|
||
alias grep='grep --color=auto'
|
||
alias egrep='grep -E'
|
||
alias fgrep='grep -F'
|
||
|
||
# Other aliases
|
||
alias paths='echo -e ${PATH//:/\\n}' # path: Echo all executable Paths
|
||
alias userlist="cut -d: -f1 /etc/passwd | sort"
|
||
alias ip='ip -color'
|
||
alias stow='stow -d $DOTFILES '
|
||
|
||
if command -v tmux &> /dev/null && [ -z "$TMUX" ]; then
|
||
tmux attach-session -t default || tmux new-session -s default
|
||
fi
|