首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >zsh:运行zle小部件后刷新提示

zsh:运行zle小部件后刷新提示
EN

Stack Overflow用户
提问于 2018-09-14 05:45:15
回答 1查看 2.1K关注 0票数 6

我定义了以下小部件

代码语言:javascript
复制
function cdd()
{
    cd /
}
zle -N cdd{,}
bindkey "^R" cdd

按下组合键后,cwd已经更改,但终端提示没有更新。示例,在执行以下操作后()

代码语言:javascript
复制
~/tmp/todelete$ | # press key ^R  here; "~$" is the prompt; "|" denotes cursor

终端机保持不变。如果我然后键入ls -ld .,它将显示

代码语言:javascript
复制
~/tmp/todelete$ ls -ld .
dr-xr-xr-x 23 root root 4096 Sep 14 07:52 ./

/$ |

这意味着在运行cwd时,ll已经是/了。

这是非常混乱的,可能导致严重的错误。(例如,在按^R之后,我被打断离开我的办公桌,然后回来,我可能会忘记我做了什么。)

如何让终端在按下键后重画提示符?有一个zle函数来完成这个任务吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-16 13:39:53

reset-prompt可以拯救:

代码语言:javascript
复制
function cdd()
{
    cd /
    zle reset-prompt # XXX: added
}

reset-prompt 强制屏幕左右侧的提示重新展开,然后重新显示编辑缓冲区。这既反映了提示符变量本身的更改,也反映了值扩展中的更改(例如,时间或目录的更改,或提示符所指变量值的更改)。 否则,只有在每次zle启动时,以及当显示被shell的另一部分的输出(例如作业通知)中断时,才会展开提示符,这会导致命令行被重印。- zshzle(1),重置提示,杂项,小部件,zsh命令行编辑器

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52325626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档