diff options
Diffstat (limited to 'home/.oh-my-zsh/lib/history.zsh')
| -rw-r--r-- | home/.oh-my-zsh/lib/history.zsh | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/home/.oh-my-zsh/lib/history.zsh b/home/.oh-my-zsh/lib/history.zsh new file mode 100644 index 0000000..781a0e9 --- /dev/null +++ b/home/.oh-my-zsh/lib/history.zsh @@ -0,0 +1,48 @@ +## History wrapper +function omz_history { + # parse arguments and remove from $@ + local clear list stamp REPLY + zparseopts -E -D c=clear l=list f=stamp E=stamp i=stamp t:=stamp + + if [[ -n "$clear" ]]; then + # if -c provided, clobber the history file + + # confirm action before deleting history + print -nu2 "This action will irreversibly delete your command history. Are you sure? [y/N] " + builtin read -E + [[ "$REPLY" = [yY] ]] || return 0 + + print -nu2 >| "$HISTFILE" + fc -p "$HISTFILE" + + print -u2 History file deleted. + elif [[ $# -eq 0 ]]; then + # if no arguments provided, show full history starting from 1 + builtin fc "${stamp[@]}" -l 1 + else + # otherwise, run `fc -l` with a custom format + builtin fc "${stamp[@]}" -l "$@" + fi +} + +# Timestamp format +case ${HIST_STAMPS-} in + "mm/dd/yyyy") alias history='omz_history -f' ;; + "dd.mm.yyyy") alias history='omz_history -E' ;; + "yyyy-mm-dd") alias history='omz_history -i' ;; + "") alias history='omz_history' ;; + *) alias history="omz_history -t '$HIST_STAMPS'" ;; +esac + +## History file configuration +[ -z "$HISTFILE" ] && HISTFILE="$HOME/.zsh_history" +[ "$HISTSIZE" -lt 50000 ] && HISTSIZE=50000 +[ "$SAVEHIST" -lt 10000 ] && SAVEHIST=10000 + +## History command configuration +setopt extended_history # record timestamp of command in HISTFILE +setopt hist_expire_dups_first # delete duplicates first when HISTFILE size exceeds HISTSIZE +setopt hist_ignore_dups # ignore duplicated commands history list +setopt hist_ignore_space # ignore commands that start with space +setopt hist_verify # show command with history expansion to user before running it +setopt share_history # share command history data |
