NEW ERA
This commit is contained in:
159
.zshrc
Normal file
159
.zshrc
Normal file
@@ -0,0 +1,159 @@
|
||||
# Basic
|
||||
export LANG=en_US.UTF-8
|
||||
export EDITOR=vim
|
||||
export HISTFILE=~/.zhistory
|
||||
export HISTSIZE=100000
|
||||
export SAVEHIST=100000
|
||||
|
||||
# History behavior
|
||||
setopt INC_APPEND_HISTORY SHARE_HISTORY
|
||||
setopt HIST_IGNORE_ALL_DUPS HIST_REDUCE_BLANKS
|
||||
setopt HIST_VERIFY
|
||||
|
||||
# General quality-of-life
|
||||
setopt EXTENDED_GLOB
|
||||
setopt INTERACTIVE_COMMENTS
|
||||
setopt MULTIOS # pipe to multiple outputs
|
||||
setopt AUTO_PUSHD # cd becomes pushd
|
||||
setopt AUTO_NAME_DIRS # use named dirs when possible
|
||||
setopt GLOB_COMPLETE # expand globs
|
||||
setopt ZLE
|
||||
setopt NO_FLOW_CONTROL # disable Ctrl-S
|
||||
setopt CLOBBER # allow > to overwrite
|
||||
setopt NO_CASE_GLOB # case insensitive globbing
|
||||
setopt NUMERIC_GLOB_SORT
|
||||
setopt RC_EXPAND_PARAM # better array expansion
|
||||
|
||||
unsetopt AUTO_CD # don't run directories as commands
|
||||
unsetopt CORRECT # no "did you mean?"
|
||||
unsetopt BANG_HIST # no ! history expansion
|
||||
|
||||
# modules
|
||||
zmodload zsh/datetime
|
||||
zmodload zsh/mathfunc
|
||||
|
||||
# plugin manager
|
||||
ZINIT_HOME="${XDG_DATA_HOME:-${HOME}}/.zinit.git"
|
||||
[ ! -d $ZINIT_HOME ] && mkdir -p "$(dirname $ZINIT_HOME)"
|
||||
[ ! -d $ZINIT_HOME/.git ] && git clone https://github.com/zdharma-continuum/zinit.git "$ZINIT_HOME"
|
||||
source "${ZINIT_HOME}/zinit.zsh"
|
||||
|
||||
zinit light zsh-users/zsh-autosuggestions
|
||||
zinit light zsh-users/zsh-syntax-highlighting
|
||||
zinit light zsh-users/zsh-completions
|
||||
|
||||
# completions
|
||||
autoload -Uz compinit
|
||||
compinit
|
||||
|
||||
# idk?
|
||||
zstyle ':completion:*' menu select
|
||||
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
|
||||
bindkey '^[[Z' reverse-menu-complete # shift-tab
|
||||
|
||||
# search from prefix
|
||||
zinit light zsh-users/zsh-history-substring-search
|
||||
bindkey "${key[Up]}" history-substring-search-up
|
||||
bindkey "${key[Down]}" history-substring-search-down
|
||||
|
||||
# keybindings
|
||||
bindkey -e # emacs mode
|
||||
bindkey '\e[1~' beginning-of-line
|
||||
bindkey '\e[4~' end-of-line
|
||||
bindkey "\eOH" beginning-of-line
|
||||
bindkey "\eOF" end-of-line
|
||||
bindkey '^[[3~' delete-char # Delete key
|
||||
bindkey '^[[1;5C' forward-word # Ctrl+Right
|
||||
bindkey '^[[1;5D' backward-word # Ctrl+Left
|
||||
bindkey '^[.' insert-last-word # Alt+. or Esc,. (last arg of prev cmd)
|
||||
bindkey '^[b' backward-word # Alt+B
|
||||
bindkey '^[f' forward-word # Alt+F
|
||||
bindkey '^[^?' backward-kill-word # Alt+Backspace
|
||||
bindkey '^Q' push-line # Ctrl+Q (stash line, type another, comes back)
|
||||
autoload -Uz edit-command-line && zle -N edit-command-line
|
||||
bindkey '^X^E' edit-command-line # Ctrl+X,E → edit in $EDITOR
|
||||
|
||||
# starship config (inline)
|
||||
export STARSHIP_CONFIG=~/.config/starship.toml
|
||||
mkdir -p ~/.config
|
||||
cat > $STARSHIP_CONFIG << 'EOF'
|
||||
add_newline = true
|
||||
format = """$git_branch$git_status$character"""
|
||||
right_format = """$username[@](red)$hostname $cmd_duration$time $directory"""
|
||||
|
||||
[git_branch]
|
||||
format = "[$branch]($style) "
|
||||
|
||||
[git_status]
|
||||
format = '[$all_status$ahead_behind]($style)'
|
||||
|
||||
[username]
|
||||
show_always = true
|
||||
format = "[$user]($style)"
|
||||
style_user = "blue bold"
|
||||
|
||||
[hostname]
|
||||
ssh_only = false
|
||||
format = "[$hostname]($style)"
|
||||
style = "blue bold"
|
||||
|
||||
[directory]
|
||||
truncation_length = 5
|
||||
truncate_to_repo = false
|
||||
style = "cyan bold"
|
||||
|
||||
[cmd_duration]
|
||||
min_time = 5_000
|
||||
show_milliseconds = true
|
||||
format = '[$duration]($style) '
|
||||
|
||||
[time]
|
||||
disabled = false
|
||||
format = "[$time]($style)"
|
||||
style = "green"
|
||||
|
||||
[character]
|
||||
success_symbol = "[➤](green)"
|
||||
error_symbol = "[➤](red)"
|
||||
EOF
|
||||
|
||||
# starship prompt
|
||||
zinit ice as"command" from"gh-r" \
|
||||
atclone"./starship init zsh > init.zsh; ./starship completions zsh > _starship" \
|
||||
atpull"%atclone" src"init.zsh"
|
||||
zinit light starship/starship
|
||||
|
||||
# paths
|
||||
typeset -U path
|
||||
path=(
|
||||
$HOME/.local/bin
|
||||
$HOME/.cargo/bin
|
||||
$path
|
||||
)
|
||||
|
||||
# aliases: git
|
||||
alias g="git"
|
||||
alias a="git add --all :/"
|
||||
alias b="git branch"
|
||||
alias c="git commit -am"
|
||||
alias ch="git checkout"
|
||||
alias pull="git pull"
|
||||
alias rb="git reset HEAD --hard"
|
||||
alias s="git status"
|
||||
alias st="git stash"
|
||||
alias dc="a && c 'wip'"
|
||||
|
||||
# aliases: dotfiles (bare repo)
|
||||
alias .g='git --git-dir=$HOME/.dotgit/ --work-tree=$HOME'
|
||||
alias .gs='.g status -uno'
|
||||
alias .gp='.g commit -am "auto" && .g push'
|
||||
|
||||
# aliases: tmux
|
||||
alias tmuxr="tmux new-session -A -s auto"
|
||||
alias tmuxn="tmux new-session -A -s auto \; new-window"
|
||||
alias tmuxa="tmux new-session -A -s"
|
||||
|
||||
# aliases: misc
|
||||
alias zshreload="exec zsh"
|
||||
alias -g LATEST='*(om[1])' # glob: most recently modified
|
||||
alias FUNCTION_PRELUDE="setopt LOCAL_OPTIONS PIPE_FAIL XTRACE ERR_RETURN"
|
||||
Reference in New Issue
Block a user