0%

zsh无法更换主题

今天在知乎上发现一款zsh的主题,感觉比较好看,推荐给大家。

可能很多人都用过 ys 这款主题,显示的信息很全也很清爽。但是对于我来说,不太喜欢它的一点就是前面的 # user @ hostname in 部分,感觉这部分完全没有显示的必要,同时如果进入的目录比较深的话,还会导致显示的提示信息很长。所以我就一直没有选择这款主题。

偶然看到一个名为 astro 的zsh主题 iplaces/astro-zsh-theme: Astro Theme for Oh My ZSH,是基于 ys 修改而来的。没想到也遇到了和我有同样想法的同学(ps: 只不过人家已经把想法变成了现实,而我却…)

因为加上用户名和 machine 信息之后很容易在文件路径较长时候产生换行,而且用户名和 machine 信息在我们使用 iTerm 的时候基本上用处很小所以我直接把他们省略掉了,看着清爽。

主要的部分就是文件路径、git 状态、git hash 和时间

Astro 主题的安装方法也很简单,直接按照给出的命令操作即可。


我之前一直使用的是 spaceship 这款主题。

要想修改zsh的主题设置,只需要将 ~/.zshrc 文件中的 ZSH_THEME="spaceship" 部分,改成相应主题的名字即可。

但当我将其改成 ZSH_THEME="astro" 之后,却发现 source ~/.zshrc 无法切换到新的主题,显示的还是之前的 spaceship 的主题样式:

spaceship theme:

1
2
3
Leafney.github.io on  hexo [⇡] is 📦 v0.0.0
3.7.1 via ⬢ v10.15.3

然后我去 zsh 的 github 中查询是否有相关的 issues。发现其中一种方法是将:

1
2
3
4
plugins=(
git
zsh-autosuggestions
)

改成在一行的方式:

1
plugins=(git zsh-autosuggestions)

不过这个方法在测试后无效。


然后我又将其尝试更改成其他的主题样式,如默认的 robbyrussell,结果发现还是 spaceship 的主题样式。那么到这里,基本上可以确定是 spaceship 这个主题的问题了,可能是当初我在配置 spaceship 主题时有什么全局设置,导致它每次 source 时都会覆盖更改的主题。

随后,我去 spaceship 主题的官方网站 Home · Spaceship ZSH 查找是否有相关的全局设置。发现了下面的一段:

1
2
3
# Set Spaceship ZSH as a prompt
autoload -U promptinit; promptinit
prompt spaceship

当我把 ~/.zshrc 中这部分注释掉之后再次 source,发现新的主题可以正常使用了:

astro theme:

1
2
# ~/Project/Leafney.github.io [hexo ● (0673186)] [11:53:36]
➜ hexo s -g

更换成其他的主题,也一样可以正常切换:
robbyrussell theme:

1
➜  Leafney.github.io git:(hexo) hexo s -g

至于上面这段关于 prompt 的配置,“咱也不知道为啥,咱也不敢问”


如有疑问或需要技术讨论,请留言或发邮件到 service@itfanr.cc