Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Tip of the day: restoring an aborted command-line



When you abort a command-line with Ctrl-C or whatever, the Zsh line
editor sets $ZLE_LINE_ABORTED to the contents of the command-line before
it was aborted. Sometimes you might want to recover the aborted line
and you could bind a dedicated key to that purpose. The following trick
instead creates an undo event so that you can simply use an undo to get
back the aborted line:

  zle-line-init () {
    if [[ -n $ZLE_LINE_ABORTED ]]; then
      local savebuf="$BUFFER" savecur="$CURSOR"
      BUFFER="$ZLE_LINE_ABORTED" 
      CURSOR="$#BUFFER" 
      zle split-undo
      BUFFER="$savebuf" CURSOR="$savecur" 
    fi
  }
  zle -N zle-line-init

Undo is bound by default to ^_, ^X^U and ^Xu in emacs mode and u in vi
command mode but I find it useful to bind it in vi-insert mode.

Also note the push-input widget if you want to put the current command
line aside but later restore it.

Oliver



Messages sorted by: Reverse Date, Date, Thread, Author