zle reset-prompt不能清除提示符

4
我有一个快捷键可以向上进入上一级目录(非常有用):
# C-M-u: up-directory
up-directory() {
    builtin cd .. && zle reset-prompt
}
zle -N up-directory
bindkey '\e\C-u' up-directory

它的功能很好,除了提示信息没有真正重置。例如,在 Git 存储库(〜/ .dotfiles)中开始:

enter image description here

在执行 C-M-u 后,我得到:

enter image description here

所以,我已经上升了一个级别(进入),但是 Git 信息仍然存在,而且已经不再有效——我不再处于 Git 存储库中

如何解决这个问题?

1个回答

6

在重置提示符之前,您可能需要执行precmds

fzf的zsh集成可以实现此功能:

# Ensure `precmds` are run after `cd`
fzf-redraw-prompt() {
  local precmd
  for precmd in $precmd_functions; do
    $precmd
  done
  zle reset-prompt
}

那么,尝试像这样:

up-directory() {
    builtin cd ..
    if (( $? == 0 )); then
        local precmd
        for precmd in $precmd_functions; do
            $precmd
        done
        zle reset-prompt
    fi
}

不是我的问题,但它完美地工作了。谢谢! - kohane15

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接