Last active
June 27, 2022 16:46
-
-
Save tyrone-sudeium/e175adf490eb74a4de0229ab26153fa5 to your computer and use it in GitHub Desktop.
My minimal zshrc, which sets up my standard prompt, saves zsh history to disk, sets the nice history searching up/down arrow behaviour, all without oh-my-zsh, which means new terminal windows open in milliseconds
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Set prompt | |
autoload -U promptinit; promptinit | |
export PATH=$PATH:$HOME/bin | |
# Set my lightweight prompt | |
export PROMPT='%{%F{cyan}%}[%2c% ]%F{red}$ %f' | |
# Set history settings -- stolen wholesale from oh-my-zsh because it's good and the built-ins are not | |
function omz_history { | |
local clear list | |
zparseopts -E c=clear l=list | |
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 | |
# unless a number is provided, show all history events (starting from 1) | |
[[ ${@[-1]-} = *[0-9]* ]] && builtin fc -l "$@" || builtin fc -l "$@" 1 | |
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=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 | |
# Better up arrow / down arrow history behaviour | |
zmodload zsh/zle | |
autoload -Uz +X add-zle-hook-widget | |
autoload -U up-line-or-beginning-search | |
autoload -U down-line-or-beginning-search | |
zle -N up-line-or-beginning-search | |
zle -N down-line-or-beginning-search | |
bindkey "$terminfo[kcuu1]" up-line-or-beginning-search # Up | |
bindkey "$terminfo[kcud1]" down-line-or-beginning-search # Down | |
# Make sure that the terminal is in application mode when zle is active, since | |
# only then values from $terminfo are valid | |
if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then | |
function zle-line-init() { | |
echoti smkx | |
} | |
function zle-line-finish() { | |
echoti rmkx | |
} | |
zle -N zle-line-init | |
zle -N zle-line-finish | |
fi | |
# Use KDE KWallet for SSH keys | |
[[ -e /usr/bin/ksshaskpass ]] && export SSH_ASKPASS=/usr/bin/ksshaskpass | |
# Install Ubuntu command-not-found handler | |
[[ -e /etc/zsh_command_not_found ]] && source /etc/zsh_command_not_found | |
# Init nodenv | |
export PATH="$HOME/.nodenv/bin:$PATH" | |
type nodenv &>/dev/null && eval "$(nodenv init -)" | |
# Load Apple's Terminal additions... (Catalina and above) | |
# Supports stuff like opening new tabs in the last selected directory | |
[ -r "/etc/zshrc_$TERM_PROGRAM" ] && . "/etc/zshrc_$TERM_PROGRAM" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
For Mojave and older the contents of
/etc/zshrc_Apple_Terminal
is: