shell - zsh 选项卡完成弄乱了命令行格式

标签 shell zsh

我在 OS X 上使用 oh-my-zsh 运行 zsh。每次我使用 zsh 很棒的 tab-completion 时,当前命令行提示符上的格式都会变得非常糟糕。例如:

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

最佳答案

我在 PopOS 和 Arch linux 上遇到了同样的问题。我尝试了很多来自不同地方的解决方案,但唯一对我有用的解决方案是 this romkatv 就 oh-my-zsh github 存储库上的问题提出的建议。
解决方法是复制.zsh-theme您在 oh-my-zsh 中使用的任何主题的文件,并用 %{%G<CHARACTER>%} 包围所有非 ASCII 字符(如表情符号)
例如,默认的 oh-my-zsh 主题 robbyrussel包含 2 个非 ASCII 字符。提示中的“➜”字符

PROMPT="%(?:%{$fg_bold[green]%}➜ :%{$fg_bold[red]%}➜ )"
以及 git 目录提示中的“✗”字符
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}✗"
使用 %{%G<character>%}像这样的 2 个非 ASCII 字符
PROMPT="%(?:%{$fg_bold[green]%}%{%G➜%} :%{$fg_bold[red]%}%{%G➜%} )"
和这个
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}%{%G✗%}"
为我解决了这个问题。

关于shell - zsh 选项卡完成弄乱了命令行格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17931764/

相关文章:

python - 尝试使用 python 脚本获取源时检测到不安全的依赖于完成的目录

macos - 安装/升级/设置 ZSH 默认版本的 final方法是什么?

来自 shell 脚本的 Javascript

linux - 如果使用 nohup 运行,脚本命令不会等待子进程

java - 如何使用 Java 通过 Windows/cygwin 执行 unix 命令

shell - 如何查找同名子文件夹的磁盘大小

linux - 如何将此代码转换为 shell 脚本?

bash - Shell 相当于 Perl 的死

zsh - 为什么 zsh 在我的输出末尾添加 "%"

ZSH Shell 历史记录不起作用