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')" printf "${READLINE_LINE:0:$READLINE_POINT}$incremented_line" } function __readline_incdec_incdec2 { # echo "!!" echo !# } # function __readline_incdec_perl { # perl # } bind -x '"\C-xa+":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