export ZCALC_HISTFILE="${HOME}/.zcalc_history" autoload -U zcalc function __format_number() { local num="${1}" if [[ "${num}" =~ ^[-]?[0-9]+$ ]]; then LC_NUMERIC=en_US.UTF-8 printf "%'d\n" "${num}" | sed "s/,/_/g" else echo "${num}" fi } function __calc { # Получаем результат от zcalc local result result="$(ZDOTDIR="${HOME}" zcalc -f -e "$*" 2>/dev/null)" result="${result%.*}" if [[ "$result" =~ ^[-]?[0-9]+$ ]]; then __format_number "$result" else echo "$result" fi } aliases[calc]='noglob __calc' aliases[=]='noglob __calc' function accept-line() { if [[ ${BUFFER} =~ '^[ ]?\(?[-+]?[0-9]+[^a-zA-Z]+' ]]; then echo test "${BUFFER[1]}" != " " && print -S -- "${BUFFER}" # saving the command to history __calc "${BUFFER}" BUFFER= fi zle .${WIDGET} } zle -N accept-line # vim: ft=zsh