инструмент для таких движений - очень универсальный, но за счет некоторых дополнительных нажатий клавиш.
Предположим, это связано с CTRL+Y Затем вы нажимаете CTRL+Y , отпускаете и нажимаете ; и отпустить. тогда цель прыжка высвечивает все случаи ; в командной строке и маркирует их с помощью г:
 # this; is; a; nonsense; command; line
становится

Теперь просто нажмите a, b, c, ..., чтобы переместить курсор в соответствующую позицию.
функция оболочки
Однако также легко написать конкретную функцию, которая делает то, что вы хотите. Авторы этого блога собирают кредиты на оригинальную идею, я адаптировал код под ваши требования:
    function backward-shell-block()          # original code from http://www.longhaired.org/blogg/individuell/2007-04-29-zsh
    {                                        # adapted by mpy at https://superuser.com/a/1407146/195224
      local blocks block colons commandline
      commandline=${LBUFFER//[\[\]\/|;_]/;}  # replace al disired block separators with ;
      blocks=("${(s:;:)commandline/\~/_}")   # split at ; and replace ~ to prevent FILENAME EXPANSION messing things up
      block=$blocks[-1]
      colons=-1
      while [[ $commandline[$colons] == ";" ]]; do
        (( colons-- ))
      done
      (( CURSOR -= $#block - $colons ))
    }
    function forward-shell-block()
    {
      local blocks block colons commandline
      commandline=${RBUFFER//[\[\]\/|;_]/;}
      blocks=("${(s:;:)commandline/\~/_}")
      if [[ $commandline[1] == ";" ]]; then
        block=$blocks[2]
      else
        block=$blocks[1]
      fi
      colons=1
      while [[ $commandline[$colons] == ";" ]]; do
        (( colons++ ))
      done
      (( CURSOR += $#block + $colons -1 ))
    }
    zle -N backward-shell-block
    zle -N forward-shell-block
    bindkey '^W' backward-shell-block
    bindkey '^E' forward-shell-block
Здесь я связал левую и правую функции перехода с CTRL+W и CTRL+E , соответственно.