From 61f727fb96fb69b1f1dd8374b6f146b753af5dd4 Mon Sep 17 00:00:00 2001 From: cornfeedhobo Date: Mon, 4 Jan 2021 19:37:34 -0600 Subject: [PATCH] refactor all history modifications into discrete plugins --- clean_files.txt | 6 ++++++ lib/history.bash | 12 ------------ plugins/available/history-search.plugin.bash | 9 +++++++++ .../history-substring-search.plugin.bash | 9 +++++++++ plugins/available/history.plugin.bash | 18 ++++++++++-------- 5 files changed, 34 insertions(+), 20 deletions(-) delete mode 100644 lib/history.bash create mode 100644 plugins/available/history-search.plugin.bash create mode 100644 plugins/available/history-substring-search.plugin.bash diff --git a/clean_files.txt b/clean_files.txt index 6882ceff..f94b2dca 100644 --- a/clean_files.txt +++ b/clean_files.txt @@ -24,6 +24,12 @@ hooks .gitattributes lint_clean_files.sh +# plugins +# +plugins/available/history.plugin.bash +plugins/available/history-search.plugin.bash +plugins/available/history-substring-search.plugin.bash + # themes # themes/agnoster diff --git a/lib/history.bash b/lib/history.bash deleted file mode 100644 index a1a7cb04..00000000 --- a/lib/history.bash +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash - -# Bash History Handling - -shopt -s histappend # append to bash_history if Terminal.app quits -export HISTCONTROL=${HISTCONTROL:-ignorespace:erasedups} # erase duplicates; alternative option: export HISTCONTROL=ignoredups -export HISTSIZE=${HISTSIZE:-5000} # resize history size -export AUTOFEATURE=${AUTOFEATURE:-true autotest} # Cucumber / Autotest integration - -function rh { - history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head -} diff --git a/plugins/available/history-search.plugin.bash b/plugins/available/history-search.plugin.bash new file mode 100644 index 00000000..fd27585c --- /dev/null +++ b/plugins/available/history-search.plugin.bash @@ -0,0 +1,9 @@ +cite about-plugin +about-plugin 'search history using the prefix already entered' + +# enter a few characters and press UpArrow/DownArrow +# to search backwards/forwards through the history +if [[ ${SHELLOPTS} =~ (vi|emacs) ]]; then + bind '"\e[A":history-search-backward' + bind '"\e[B":history-search-forward' +fi diff --git a/plugins/available/history-substring-search.plugin.bash b/plugins/available/history-substring-search.plugin.bash new file mode 100644 index 00000000..6024b524 --- /dev/null +++ b/plugins/available/history-substring-search.plugin.bash @@ -0,0 +1,9 @@ +cite about-plugin +about-plugin 'search history using the substring already entered' + +# enter a few characters and press UpArrow/DownArrow +# to search backwards/forwards through the history +if [[ ${SHELLOPTS} =~ (vi|emacs) ]]; then + bind '"\e[A":history-substring-search-backward' + bind '"\e[B":history-substring-search-forward' +fi diff --git a/plugins/available/history.plugin.bash b/plugins/available/history.plugin.bash index 528548ef..b7029d27 100644 --- a/plugins/available/history.plugin.bash +++ b/plugins/available/history.plugin.bash @@ -1,9 +1,11 @@ cite about-plugin -about-plugin 'history manipulation' -# enter a few characters and press UpArrow/DownArrow -# to search backwards/forwards through the history -if [[ ${SHELLOPTS} =~ (vi|emacs) ]] -then - bind '"":history-search-backward' - bind '"":history-search-forward' -fi +about-plugin 'improve history handling with sane defaults' + +# append to bash_history if Terminal.app quits +shopt -s histappend + +# erase duplicates; alternative option: export HISTCONTROL=ignoredups +export HISTCONTROL=${HISTCONTROL:-ignorespace:erasedups} + +# resize history to 100x the default (500) +export HISTSIZE=${HISTSIZE:-50000}