mirror of
https://github.com/dcarrillo/prezto.git
synced 2024-12-22 21:58:00 +00:00
509c5ca80f
Change default `HISTFILE` path from `~/.zhistory` to more conventional `~/.zsh_history`. This aligns better with Debian variants, macOS and Oh My Zsh. This would provide an easier onboarding experience to users coming to Prezto from standard (framework free) zsh or from Oh My Zsh. For existing Prezto users, we attempt to automatically rename old `HISTFILE` to new one iff the old one exists and the new one doesn't. However, if both old and new `HISTFILE` exist and the old one is more recent, we just alert the user about what changed with a suggested way to accommodate the change.
64 lines
2.3 KiB
Bash
64 lines
2.3 KiB
Bash
#
|
|
# Sets history options and defines history aliases.
|
|
#
|
|
# Authors:
|
|
# Robby Russell <robby@planetargon.com>
|
|
# Sorin Ionescu <sorin.ionescu@gmail.com>
|
|
#
|
|
|
|
#
|
|
# Options
|
|
#
|
|
|
|
setopt BANG_HIST # Treat the '!' character specially during expansion.
|
|
setopt EXTENDED_HISTORY # Write the history file in the ':start:elapsed;command' format.
|
|
setopt SHARE_HISTORY # Share history between all sessions.
|
|
setopt HIST_EXPIRE_DUPS_FIRST # Expire a duplicate event first when trimming history.
|
|
setopt HIST_IGNORE_DUPS # Do not record an event that was just recorded again.
|
|
setopt HIST_IGNORE_ALL_DUPS # Delete an old recorded event if a new event is a duplicate.
|
|
setopt HIST_FIND_NO_DUPS # Do not display a previously found event.
|
|
setopt HIST_IGNORE_SPACE # Do not record an event starting with a space.
|
|
setopt HIST_SAVE_NO_DUPS # Do not write a duplicate event to the history file.
|
|
setopt HIST_VERIFY # Do not execute immediately upon history expansion.
|
|
setopt HIST_BEEP # Beep when accessing non-existent history.
|
|
|
|
#
|
|
# Variables
|
|
#
|
|
|
|
HISTFILE="${HISTFILE:-${ZDOTDIR:-$HOME}/.zsh_history}" # The path to the history file.
|
|
HISTSIZE=10000 # The maximum number of events to save in the internal history.
|
|
SAVEHIST=10000 # The maximum number of events to save in the history file.
|
|
|
|
#
|
|
# Aliases
|
|
#
|
|
|
|
# Lists the ten most used commands.
|
|
alias history-stat="history 0 | awk '{print \$2}' | sort | uniq -c | sort -n -r | head"
|
|
|
|
if [[ -s "${OLD_HISTFILE::=${HISTFILE:h}/.zhistory}" ]]; then
|
|
|
|
# New 'HISTFILE' doesn't exist yet, rename legacy one if available and notify.
|
|
if [[ ! -s "$HISTFILE" ]]; then
|
|
<<EON
|
|
NOTICE: Default path of 'HISTFILE' has changed from '${OLD_HISTFILE/#$HOME/~}'
|
|
to '${HISTFILE/#$HOME/~}'.
|
|
Attempting to rename the existing 'HISTFILE' ...
|
|
EON
|
|
mv -v "$OLD_HISTFILE" "$HISTFILE"
|
|
|
|
# New 'HISTFILE' does exist and is older than legacy one, just warn.
|
|
elif [[ "$OLD_HISTFILE" -nt "$HISTFILE" ]]; then
|
|
<<EOW
|
|
WARNING: Default path of 'HISTFILE' has changed from '${OLD_HISTFILE/#$HOME/~}'
|
|
to '${HISTFILE/#$HOME/~}'.
|
|
Either set 'HISTFILE' in '${${0:h}/#$HOME/~}'
|
|
or move previous history from '${OLD_HISTFILE/#$HOME/~}' to
|
|
'${HISTFILE/#$HOME/~}'.
|
|
EOW
|
|
fi
|
|
|
|
unset OLD_HISTFILE
|
|
fi
|