## 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
}
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 ]] {
}
unset a k v
+## fzf
+# bash-style reverse-search-history (i.e. reverse-i-search)
+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
alias rehash='_sev_setpath; rehash'
# ps
if [[ -v commands[pstree] && $commands[pstree]:A:t != busybox ]] {
# use pstree, but NOT busybox pstree because it kinda sucks
- ps="pstree -wg3"
+ ps='pstree -wg3'
} elif [[ "$OSTYPE" =~ '^freebsd' ]] {
- ps="ps -aSdfxwwouser=USR -ogroup=GRP -opid,nice=NI \
- -o%cpu,%mem,tty,stat,start=START -oetime,command"
+ ps='ps -aSdfxwwouser=USR -ogroup=GRP -opid,nice=NI \
+ -o%cpu,%mem,tty,stat,start=START -oetime,command'
} elif [[ $commands[ps]:A:t == busybox ]] {
# busybox compatible
ps="ps -eouser='USR ' -ogroup='GRP ' \
} else {
# XXX: untested, posix
# TODO: support gnu ps
- ps="ps -eouser=USR -ogroup=GRP -opid,nice=NI \
- -opcpu=CPU -ovsz=MEM -otty,stat,etime,comm"
+ ps='ps -eouser=USR -ogroup=GRP -opid,nice=NI \
+ -opcpu=CPU -ovsz=MEM -otty,stat,etime,comm'
}
if [[ "$(basename "$PAGER")" = "less" ]] {
ps="$ps | less -S"
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 .'
+alias gai='git add -i'
+alias gap='git add -p'
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
+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}})
# https://github.com/ajeetdsouza/zoxide/issues/513
eval "${$(zoxide init zsh):s#_files -/#_cd#}"
alias cd=z
+ alias z-='z -'
}
alias cd..=up
## dotfiles
autoload -Uz promptinit && promptinit
prompt arrows
+### plugins
+load-plugins zshrc
+
### load site-specific
load-site-dotfile zshrc