8

我在 OS X 上使用 oh-my-zsh 运行 zsh。每次我使用 zsh 令人敬畏的制表符补全功能时,当前命令行提示符上的格式都会被搞砸。例如:

我将输入cd fo并尝试为“foo”目录完成制表符;cd fo cd fozsh 提示完成,但在等待我完成时将命令行更改为。这没什么大不了的,但很烦人。有什么建议么?

4

2 回答 2

4

我在 PopOS 和 Arch linux 上遇到了同样的问题。我从不同的地方尝试了一堆解决方案,但唯一对我有用的解决方案是romkatv 在 oh-my-zsh github 存储库上的一个问题上提出的这个建议。

解决方案是复制.zsh-theme您在 oh-my-zsh 中使用的任何主题的文件,并将所有非 ASCII 字符(如表情符号)用%{%G<CHARACTER>%}

例如,默认的 oh-my-zsh 主题robbyrussel包含 2 个非 ASCII 字符。提示符中的“➜”字符

PROMPT="%(?:%{$fg_bold[green]%}➜ :%{$fg_bold[red]%}➜ )"

以及 git 目录提示中的“✗”字符

ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}✗&quot;

像这样使用%{%G<character>%}大约 2 个非 ASCII 字符

PROMPT="%(?:%{$fg_bold[green]%}%{%G➜%} :%{$fg_bold[red]%}%{%G➜%} )"

和这个

ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}%{%G✗%}"

为我解决了这个问题。

于 2019-10-02T07:12:38.097 回答
2

我之前也遇到过同样的问题,我的解决方案是禁用一些 zsh 插件。第二种可能性是您的颜色主题可能包含导致此问题的错误。

# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
plugins=(git)

这是~/.zshrc文件中我的插件部分的最终版本。括号之间的任何其他插件可能是您的情况的原因。

如果您的问题仍然存在,您需要发布您的问题~/.zshrc,让我们检查其中的内容。

于 2014-08-19T02:54:00.637 回答