X-Git-Url: https://git.sev.monster/~sev/dotfiles.git/blobdiff_plain/d3e867c038fcb05cce5a72fd5134ff7b531c4f31..388772f1be2cad6d6141f85b18eb8a4d1ce1b9ae:/etc/zsh/.zshrc diff --git a/etc/zsh/.zshrc b/etc/zsh/.zshrc index 90e15a0..85e3d64 100644 --- a/etc/zsh/.zshrc +++ b/etc/zsh/.zshrc @@ -10,8 +10,9 @@ setopts=( ## 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 + EXTENDED_HISTORY HIST_FCNTL_LOCK HIST_IGNORE_ALL_DUPS HIST_IGNORE_DUPS + HIST_IGNORE_SPACE HIST_LEX_WORDS HIST_NO_STORE HIST_REDUCE_BLANKS + NO_HIST_SAVE_BY_COPY HIST_SAVE_NO_DUPS SHARE_HISTORY ## 16.2.6 Input/Output NO_CLOBBER CLOBBER_EMPTY CORRECT_ALL INTERACTIVE_COMMENTS HASH_EXECUTABLES_ONLY @@ -142,12 +143,16 @@ if [[ ! -v _sev_force_zkbd && ( -v terminfo || -v termcap ) ]] { } find_keymap if [[ -z $keymap ]] { - if read -q "?Can't read terminfo. Add new zkbd keymap? [y/N]"; then + if (read -q "?Can't read terminfo. Add new zkbd keymap? [y/N]") { echo - autoload -Uz zkbd && zkbd - unfunction zkbd + { + autoload -Uz zkbd && zkbd + } always { + TRY_BLOCK_ERROR=0 + unfunction zkbd + } find_keymap - fi + } echo } if [[ -n $keymap ]] { @@ -200,9 +205,19 @@ for k v (${(kv)a}) { } unset a k v -## other binds +## fzf # bash-style reverse-search-history (i.e. reverse-i-search) -bindkey '^R' history-incremental-pattern-search-backward +if [[ -v commands[fzf] ]] { + function _history-incremental-pattern-search-fzf { + l=(${(f)"$(fc -li -1 0 | fzf -e -m -n 1 +s --preview-window=hidden ${BUFFER:+-q $BUFFER})"}) + l=$(for x ("${l[@]}") { echo ${${=x}:3}; }) + BUFFER="$l" + } + zle -N _history-incremental-pattern-search-fzf + bindkey '^R' _history-incremental-pattern-search-fzf +} else { + bindkey '^R' history-incremental-pattern-search-backward +} ### aliases ## builtins @@ -280,6 +295,7 @@ alias svu="sudo python3 -mvenv --upgrade" alias g=git alias gd='git diff' alias gdh='git diff HEAD' +alias gdp='git diff HEAD\^' alias gds='git diff --staged' alias ga='git add' alias ga.='git add .' @@ -291,9 +307,13 @@ alias gp='git push' alias gu='git pull' alias gl='git log' alias gt='git tree' # from gitconfig -alias gs='git show' -alias gst='git stash' +alias gsh='git show' +alias gshn='git show --name-status' +alias gst='git status' +alias gsts='git status --short' +alias gs='git stash' alias gsp='git stash pop' +alias grc='git rebase --continue' ## cd/zoxide function up { \cd $(printf '../%.0s' {1..${1:-1}}) @@ -303,6 +323,7 @@ if [[ -v commands[zoxide] ]] { # https://github.com/ajeetdsouza/zoxide/issues/513 eval "${$(zoxide init zsh):s#_files -/#_cd#}" alias cd=z + alias z-='z -' } alias cd..=up ## dotfiles