if command -v diethist >/dev/null 2>&1; then __diethist_record() { local exit=$? local cmd cmd=$(fc -ln -1 2>/dev/null) [ -n "$cmd" ] && diethist add --exit "$exit" -- "$cmd" } precmd_functions+=(__diethist_record) __diethist_search() { local out out=$(diethist search -- "$BUFFER") || return if [ -n "$out" ]; then BUFFER="$out" CURSOR=${#BUFFER} zle redisplay fi } zle -N __diethist_search bindkey '^R' __diethist_search fi