macOS terminal: quick way to edit command options after bash/zsh autocomplete
For ZSH another option is to put the cursor at the beginning and not the end of the line (this makes it more like mksh or others). The default:

% PS1='%% ' zsh -f
% bindkey | grep up-line-or
"^[OA" up-line-or-history
"^[[A" up-line-or-history


I use set -o vi so you may need to translate the bindkey keys into whatever suits your needs:

bindkey -M vicmd "j" vi-down-line-or-history
bindkey -M vicmd "k" vi-up-line-or-history


no really I want to jump to the first argument

This requires a custom widget, which might run something like

function up-line-first-arg {
    local first offset
    zle vi-up-line-or-history
    first=${BUFFER%% *}
    CURSOR+=$(( 1 + ${#first} ))
}
zle -N up-line-first-arg
autoload -U up-line-first-arg
autoload -U compinit
compinit
set -o vi
bindkey -M vicmd "k" up-line-first-arg


This version will put the cursor on the first argument or the end of the command name (unless there are multiple spaces between the first argument and subsequent, which is not common). Docs in zshexpn(1) and zshzle(1) may help explain the particulars, but the gist is to move up like ZSH does, get the first word (if any), and move the cursor over that length, plus one to get past the space. ZSH is clever will not move the cursor past the end of the BUFFER for the case where there is no space in the command.

but wait there's more

The following version handles (perhaps uncommon) cases such as ls               -al and on failure will put the cursor at the beginning of the line.

function up-line-first-arg {
    zle vi-up-line-or-history
    [[ $BUFFER =~ "^[^ ]+[ ]+" ]] &amp;&amp; CURSOR+=${#MATCH}
}


Basically a regular expression "from the beginning of the BUFFER match one or more things that are not space followed by one or more things that are spaces" and then moving the CURSOR by that much on match.