2016-09-21 133 views
1

在zsh中,如果意外中断了命令(^ C),是否有快速恢复完全中断的命令行的方法?在zsh中恢复中断的命令

例如,

PROMPT $ this is a long command ^C 
PROMPT $ [cursor here] 

我想恢复“这是一个很长的命令”在光标位置。

回答

2

一种解决方案是

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 

然后,在新的输入线,撤消(C-/在emacs模式)将得到中止线。

参考:http://www.zsh.org/mla/users/2015/msg00652.html

我这里补充一个更详细的解释:https://www.topbug.net/blog/2016/10/03/restore-the-previously-canceled-command-in-zsh/

0

它将在$ ZLE_LINE_ABORTED中。

您可以专门绑定一个小部件来恢复它。或者在zle-line-init中使用zle split-undo为它创建一个撤销事件,以便通过按下undo来恢复它。

+0

你能否解释更多吗? – xuhdev

+0

好的,我猜这个解决方案在这里http://www.zsh.org/mla/users/2015/msg00652.html – xuhdev