Browse Source

Merge pull request #3422 from mcornella/fix-history-alias

Enhance history alias
Marc Cornellà 7 years ago
parent
commit
676038bdfa
1 changed files with 36 additions and 19 deletions
  1. 36 19
      lib/history.zsh

+ 36 - 19
lib/history.zsh

@@ -1,24 +1,41 @@
-## Command history configuration
-if [ -z "$HISTFILE" ]; then
-    HISTFILE=$HOME/.zsh_history
-fi
+## History wrapper
+function omz_history {
+  # Delete the history file if `-c' argument provided.
+  # This won't affect the `history' command output until the next login.
+  zparseopts -E c=clear l=list
 
 
-HISTSIZE=10000
-SAVEHIST=10000
+  if [[ -n "$clear" ]]; then
+    # if -c provided, clobber the history file
+    echo -n >| "$HISTFILE"
+    echo >&2 History file deleted. Reload the session to see its effects.
+  elif [[ -n "$list" ]]; then
+    # if -l provided, run as if calling `fc' directly
+    builtin fc "$@"
+  else
+    # otherwise, call `fc -l 1` to show all available
+    # history (and pass additional parameters)
+    builtin fc "$@" -l 1
+  fi
+}
 
 
-# Show history
+# Timestamp format
 case $HIST_STAMPS in
 case $HIST_STAMPS in
-  "mm/dd/yyyy") alias history='fc -fl 1' ;;
-  "dd.mm.yyyy") alias history='fc -El 1' ;;
-  "yyyy-mm-dd") alias history='fc -il 1' ;;
-  *) alias history='fc -l 1' ;;
+  "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' ;;
 esac
 esac
 
 
-setopt append_history
-setopt extended_history
-setopt hist_expire_dups_first
-setopt hist_ignore_dups # ignore duplication command history list
-setopt hist_ignore_space
-setopt hist_verify
-setopt inc_append_history
-setopt share_history # share command history data
+## History file configuration
+[ -z "$HISTFILE" ] && HISTFILE="$HOME/.zsh_history"
+HISTSIZE=50000
+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 inc_append_history     # add commands to HISTFILE in order of execution
+setopt share_history          # share command history data