And*_*ite 5 zsh shell command-line autocomplete oh-my-zsh
我的自定义 PS1 提示(我从 bash 带来的)遇到了 zsh/oh-my-zsh 问题。
当我使用内置的 zsh/oh-my-zsh 提示和选项卡进行自动完成时,这会按预期工作。
当我使用自己的 PS1 提示时,整个输入区域会移动大约 8 个空格并停留在那里,直到我发送一个换行符/换行符。
我输入了vim a并进行了选项卡式
内置主题,robbyrussell带有默认提示:

相同主题,自定义 PS1 提示:

.zshrc 中的 PS1 字符串和变量定义:
# Monokai colours
D=$'\e[37;40m'
PINK=$'\e[35;40m'
GREEN=$'\e[32;40m'
ORANGE=$'\e[33;40m'
export PS1='${PINK}andrew${D}@${ORANGE}macbook${D}:%~$ '
Run Code Online (Sandbox Code Playgroud)
作为测试,我尝试了没有颜色变量的提示,它确实有效
似乎 ANSI 代码弄乱了您的终端,可能是由于与其他内容的某些交互PS1或因为您没有重置为默认值。
幸运的是,zsh不需要使用 ANSI 转义码。您可以使用%F{color}和%K{color}分别设置前景色和背景色%f并%k重置默认值(有关更多信息,请参阅Zsh 手册)
其中任何一个都应该可以解决问题:
PS1='%5Fandrew%f@%3Fmacbook%f:%~$ '
PS1='%F{5}andrew%f@%F{3}macbook%f:%~$ '
PS1='%F{magenta}andrew%f@%F{yellow}macbook%f:%~$ '
Run Code Online (Sandbox Code Playgroud)
我使用%f代替%7For %F{white},假设您真的只想在那个地方禁用着色(因此命名变量D而不是WHITE)。如果你想%F{white}改用,你应该%f在PS1.
如果您使用 88 色或 256 色终端,您甚至可以使用这些颜色的索引。例如%F{221}会给你一个深黄色。
另外请注意,这通常不需要到export PS1的zsh-或bash为这一问题。