在zsh中,如果意外中斷了命令(^ C),是否有快速恢復完全中斷的命令行的方法?在zsh中恢復中斷的命令
例如,
PROMPT $ this is a long command ^C
PROMPT $ [cursor here]
我想恢復「這是一個很長的命令」在光標位置。
在zsh中,如果意外中斷了命令(^ C),是否有快速恢復完全中斷的命令行的方法?在zsh中恢復中斷的命令
例如,
PROMPT $ this is a long command ^C
PROMPT $ [cursor here]
我想恢復「這是一個很長的命令」在光標位置。
一種解決方案是
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/
它將在$ ZLE_LINE_ABORTED中。
您可以專門綁定一個小部件來恢復它。或者在zle-line-init中使用zle split-undo爲它創建一個撤銷事件,以便通過按下undo來恢復它。
你能否解釋更多嗎? – xuhdev
好的,我猜這個解決方案在這裏http://www.zsh.org/mla/users/2015/msg00652.html – xuhdev