As initially submitted at https://github.com/zsh-users/zsh/pull/116
: As mentioned in the code comment: # 1 means last word, 2 second last, etc. the numeric argument is supposed to be interpreted as an offset from the end. The intended behavior is a lot more useful than the current behavior. diff --git a/Functions/Zle/copy-earlier-word b/Functions/Zle/copy-earlier-word index 90e862da3..1262c0c82 100644 --- a/Functions/Zle/copy-earlier-word +++ b/Functions/Zle/copy-earlier-word @@ -11,7 +11,7 @@ setopt typesetsilent typeset -g __copyword if (( ${NUMERIC:-0} )); then # 1 means last word, 2 second last, etc. - (( __copyword = ${NUMERIC:-0} )) + (( __copyword = -${NUMERIC:-0} )) zstyle -s :$WIDGET widget __copywidget elif [[ -n $__copyword && $WIDGET = $LASTWIDGET ]]; then (( __copyword-- )) |