Quando você pressiona Enter (comando accept-line ), a linha atual é analisada e programada para execução. Se a linha estiver sintaticamente incompleta (por exemplo, echo \ ou for x in foo ), ela não será executada, mas já estará armazenada. Você pode ver que o zsh está nesse estado porque mostra o prompt PS2 em vez do usual PS1 .
Até onde eu sei, não há uma maneira interna de editar essas linhas armazenadas. Deve ser possível armazenando a linha atual sem executá-la e recuperando a linha do histórico anterior para edição.
A maneira mais fácil de obter a linha anterior é certificar-se de que a linha atual está inacabada (por exemplo, digite \ no final), aceite-a (pressione Enter ) e cancele-a (pressione Ctrl + C ). Então, você pode chamar todo o comando armazenado como uma única linha de histórico como um único buffer de várias linhas pressionando Up .