# run eval "$(diethist init)" at startup __diethist_record() { local exit=$? local cmd cmd=$(HISTTIMEFORMAT='' history 1 | sed '1 s/^[[:space:]]*[0-9]\{1,\}[[:space:]]*//') [ -n "$cmd" ] && diethist add --exit "$exit" -- "$cmd" return $exit } case "$PROMPT_COMMAND" in *__diethist_record*) ;; *) PROMPT_COMMAND="__diethist_record${PROMPT_COMMAND:+; $PROMPT_COMMAND}" ;; esac __diethist_search() { local out out=$(diethist search -- "$READLINE_LINE") || return if [ -n "$out" ]; then READLINE_LINE="$out" READLINE_POINT=${#READLINE_LINE} fi } bind -x '"\C-r": __diethist_search'