function incdec { local EX_DATAERR=65 # Portion of the line from point to the end of the line. local line_part="${READLINE_LINE:$READLINE_POINT}" # Number to increment. local number= # If the line part doesn't contain a number, exit. # if ! [[ "$line_part" =~ [^0-9]*([0-9]+)[^0-9]* ]]; then # return $EX_DATAERR # fi number=${BASH_REMATCH[1]} # echo "${READLINE_LINE}" # echo "${BASH_REMATCH[0]}" # echo "$(($number + 1))" incremented_line="$(echo "$line_part" | perl -pe 's/(\d+)/$1+1/e')" # echo "${READLINE_LINE:0:$READLINE_POINT}$incremented_line" READLINE_LINE="${READLINE_LINE:0:$READLINE_POINT}$incremented_line" # echo 'this is a test' } function __readline_incdec_incdec2 { # echo "!!" echo !# } # function __readline_incdec_perl { # perl # } bind -x '"\C-xa+":incdec' # bind '"\C-xa+": "\C-e$(incdec)\e\C-e"' # bind '"\C-xa+": "\C-e`incdec`"' # bind '"\C-xaa":\C-xa+' function __readline_incdec_save_readline_point { __readline_incdec_readline_point="$READLINE_POINT" } bind -x '"\C-xasrp": __readline_incdec_save_readline_point' # bind '"\C-xaa": \C-xasrp\C-c$(__readline_incdec_incdec2)\e\C-e' # bind '"\C-xaa": \C-xasrp' # bind '"\C-xaa": __readline_incdec_incdec2' # 2021.01.15: Idea: Maybe try using $EDITOR