我定义了以下小部件

function cdd()
{
    cd /
}
zle -N cdd{,}
bindkey "^R" cdd

按下组合键后,cwd已更改,但终端提示未更新。示例,执行完此()之后
~/tmp/todelete$ | # press key ^R  here; "~$" is the prompt; "|" denotes cursor

终端保持不变。如果再输入ls -ld .,则显示
~/tmp/todelete$ ls -ld .
dr-xr-xr-x 23 root root 4096 Sep 14 07:52 ./

/$ |

这意味着cwd运行时的ll已经是/

这是非常困惑的,并可能导致严重的错误。 (例如,如果在按下^R之后我被打扰离开我的办公 table ,然后又回来,我可能会忘记所做的事情)

按下键后如何让终端重绘提示?是否有zle函数可以做到这一点?

最佳答案

reset-prompt可以营救:

function cdd()
{
    cd /
    zle reset-prompt # XXX: added
}

关于zsh:运行zle小部件后刷新提示,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52325626/

10-11 22:56