Вы хотите использовать виджет push-line-or-edit
, затем вы можете отредактировать всю команду:
push-line-or-edit В приглашении верхнего уровня (PS1), эквивалентном push-line. При дополнительном приглашении (PS2) переместите всю текущую многострочную конструкцию в буфер редактора. Последнее эквивалентно push-input, за которым следует get-line.
Этот виджет не привязан ни к одному ключу по умолчанию, поэтому используйте
bindkey "^[q" push-line-or-edit
привязать его к ESC-q
. (Эта комбинация клавиш привязана к push-line
при использовании привязок клавиш emacs, поэтому, если вы используете push-line
регулярно выбирайте другую комбинацию клавиш.)
Небольшая демонстрация (■ указывает на курсор):
$ bindkey "^[q" push-line-or-edit
$ echo ' [Enter]
[ quote ] ■ [ESC-q]
$ echo '
■ [up arrow]
$ ■echo '