X-Git-Url: https://git.sev.monster/~sev/dotfiles.git/blobdiff_plain/b484bab8b0951f1f1aa631b62fd486b685c6e0ff..b4fdfa65e012f7f422a6e09088fc30b88c249aec:/etc/zsh/.zshrc?ds=inline diff --git a/etc/zsh/.zshrc b/etc/zsh/.zshrc index bfe0d9f..bd670c2 100644 --- a/etc/zsh/.zshrc +++ b/etc/zsh/.zshrc @@ -1,11 +1,27 @@ ### options -setopt NO_BEEP NO_CLOBBER \ - AUTO_CD CDABLE_VARS \ - EXTENDED_GLOB GLOB_DOTS GLOB_STAR_SHORT MARK_DIRS NUMERIC_GLOB_SORT \ - CORRECT_ALL INTERACTIVE_COMMENTS \ - GLOB_COMPLETE \ - AUTO_CONTINUE LONG_LIST_JOBS \ - NO_HIST_SAVE_BY_COPY HIST_IGNORE_DUPS SHARE_HISTORY HIST_REDUCE_BLANKS +setopts=( + ## 16.2.1 Changing Directories + AUTO_CD CDABLE_VARS + ## 16.2.2 Completion + COMPLETE_IN_WORD GLOB_COMPLETE REC_EXACT + ## 16.2.3 Expansion and Globbing + EXTENDED_GLOB GLOB_DOTS GLOB_STAR_SHORT MAGIC_EQUAL_SUBST MARK_DIRS + NUMERIC_GLOB_SORT + ## 16.2.4 History + # NOTE: NO_HIST_SAVE_BY_COPY to allow saving histfile if updating another + # user's histfile. this is for compatibility with zsu. + HIST_FCNTL_LOCK HIST_IGNORE_DUPS HIST_IGNORE_SPACE HIST_LEX_WORDS + HIST_NO_STORE HIST_REDUCE_BLANKS NO_HIST_SAVE_BY_COPY SHARE_HISTORY + ## 16.2.6 Input/Output + NO_CLOBBER CLOBBER_EMPTY CORRECT_ALL INTERACTIVE_COMMENTS + HASH_EXECUTABLES_ONLY + ## 16.2.7 Job Control + AUTO_CONTINUE LONG_LIST_JOBS + ## 16.2.12 Zle + NO_BEEP +) +setopt $setopts +unset setopts ### exports ## common @@ -16,18 +32,12 @@ export PAGER=${$(whence -p less micro nano more)[(f)1]:s/micro/& -readonly true export GREP_OPTIONS=--color=auto ## histfile export HISTFILE=~/.histfile -export HISTSIZE=1000 -export SAVEHIST=1000 +export HISTSIZE=10000 +export SAVEHIST=$HISTSIZE ## python export PYTHONSTARTUP=${XDG_CONFIG_HOME:-~/.config}/pythonrc ## vim export VIMINIT='let$MYVIMRC=($XDG_CONFIG_HOME??($HOME."/.config"))."/vim/.vimrc"|execute"source"$MYVIMRC' -## wayland/gui env -export XDG_SESSION_TYPE=${XDG_SESSION_TYPE:-wayland} -export QT_QPA_PLATFORM=${QT_QPA_PLATFORM:-wayland-egl} -export QT_WAYLAND_DISABLE_WINDOWDECORATION=${QT_WAYLAND_DISABLE_WINDOWDECORATION:--1} -export SDL_VIDEODRIVER=${SDL_VIDEODRIVER:-wayland} -export TERMINAL=${TERMINAL:-$(whence -p konsole footclient urxvt xterm)[(f)1]} ### imports autoload -Uz zmv @@ -143,7 +153,7 @@ if [[ ! -v _sev_force_zkbd && ( -v terminfo || -v termcap ) ]] { if [[ -n $keymap ]] { source $keymap } else { - echo "Failed to source keymap file $keymap" >&2 + echo -E "Failed to source keymap file $keymap" >&2 } unfunction find_keymap; unset keymap } @@ -208,6 +218,13 @@ alias se=sudoedit # be paranoid alias cp='cp -ip' alias mv='mv -i' +# zsh zmv with noglob wildcards +alias zm='noglob zmv -WiM' +alias zc='noglob zmv -WiC' +alias zl='noglob zmv -WiL' +alias sm='noglob zmv -Wip"sudo mv"' +alias sc='noglob zmv -Wip"sudo cp"' +alias sl='noglob zmv -Wip"sudo ln"' if [[ "$OSTYPE" =~ '^freebsd' ]] { # don't confirm if only a few files are deleted alias rm='rm -I' @@ -216,10 +233,7 @@ if [[ "$OSTYPE" =~ '^freebsd' ]] { alias rm='rm -i' } [[ -v commands[trash-put] ]] && alias t=trash-put -## py venv -alias va='source bin/activate' -alias vd=deactivate -## ps +# ps source ~/.local/bin/.check-busybox if [[ -v commands[pstree] ]] && ! check-busybox pstree; then # use pstree, but NOT busybox pstree because it kinda sucks @@ -247,14 +261,21 @@ if [[ "$(basename "$PAGER")" = "less" ]] { alias pa=$ps alias spa="sudo $ps" unset ps +## py venv +alias va='source bin/activate' +alias vd=deactivate ## git +alias g=git alias gd='git diff' alias gdh='git diff HEAD' alias ga='git add' +alias ga.='git add .' alias gc='git commit' alias gca='git commit --amend' alias gp='git push' alias gu='git pull' +alias gl='git log' +alias gt='git tree' # from gitconfig ## cd/zoxide function up { \cd $(printf '../%.0s' {1..${1:-1}}) @@ -265,12 +286,28 @@ if [[ -v commands[zoxide] ]] { eval "${$(zoxide init zsh):s#_files -/#_cd#}" alias cd=z } +alias cd..=up ## dotfiles -alias dfu='d=${$(echo ~/.zshenv):P:h:h};GIT_DIR=$d/.git GIT_WORK_TREE=$d git pull' +alias dfu=' function { + local d=${$(echo -E - ~/.zshenv):P:h:h} + local -x GIT_DIR=$d/.git GIT_WORK_TREE=$d + git pull && + git submodule init && + git submodule sync && + git submodule update +}' +## nocorrect +# zsh doesnt really handle sudo very well, so ignore it +alias sudo='nocorrect sudo' +## docker compose +alias dcp='sudo docker compose pull' +alias dcu='sudo docker compose up -d' +alias dcr='sudo docker compose restart' +alias dcl='sudo docker compose logs -f' ### hooks autoload -Uz add-zsh-hook -_sev_exectime= +typeset -gi _sev_exectime function sev_preexec { # change terminal title to show command print -n "\e]2;$(print -P '%#')${SSH_CLIENT+$USER@$HOST:}$1\e\\" @@ -339,7 +376,7 @@ case $OSTYPE; in function vol { if [[ -z "$1" ]] { for x in $(mixerctl -a | grep 'outputs\.master'); do - echo $x + echo -E - $x done return }