macOS zsh修改终端前缀

3,583 阅读1分钟

前言

之前在系统中使用了 zsh 代替 bash,并使用 oh-my-zsh 进行了美化,刚开始感觉很爽~

但是时间久了,就发现前缀里面长长的文件路径很讨厌,比如在vscode中打开终端,路径的输出就占用了一整行的空间,输入啥命令都会换行。只要开发项目每天都要和它打交道,很影响生产力。

image.png

其实,我们只需要展示当前目录的名字就可以了。之前的几次修改都没能成功,今天,终于下决定要搞定它!

方案一、修改 ./zshrc

网上很多说法是直接修改 ./zshrc 文件的 prompt 输出格式,但是对我并没有效果。

后面在 How do I change my $PS1 on a Macbook for oh-my-zsh? 中找到了答案,原来是因为我使用了 oh-my-zsh 的主题,prompt 被这个主题接管,因此修改 ./zshrc 中的 prompt 无效。

解决方法是直接修改 oh-my-zsh 主题

方案二、修改 oh-my-zsh 主题

1. 打开 ~/.zshrc 文件

vi ~/.zshrc

2. 在文件中找到当前使用的 oh-my-zsh 主题名:

ZSH_THEME="agnoster"

这里用的主题名是 agnoster

3. 打开 oh-my-zsh 主题目录,根据主题名,找到主题文件:

cd ~/.oh-my-zsh/themes
vi agnoster.zsh-theme

4. 修改主题文件:

滑动到文件最后,build_prompt 其实是创建 PROMPT 格式,里面拆分成了多个部分。

我们这里先找到 prompt_context ,它负责的是创建文章开头的那串长长的东西,直接注释掉:

 ## Main prompt
247 build_prompt() {
248   RETVAL=$?
249   prompt_status
250   prompt_virtualenv
251   prompt_aws
252   #prompt_context
253   prompt_dir
254   prompt_git
255   prompt_bzr
256   prompt_hg
257   prompt_end
258 }
259
260 PROMPT='%{%f%b%k%}$(build_prompt) '

然后往上找,找到(或使用 command+f 查找) propt_dir ,改成下面就可以了:

205 # Dir: current working directory
206 prompt_dir() {
207   #prompt_segment blue $CURRENT_FG '%~' # show full path
208   prompt_segment blue $CURRENT_FG '%c' # show only current word folder
209 }

这里默认是 %~ 表示既展示全路径又展示当前路径,%c 表示仅展示当前路径名

5. 重启 oh-my-zsh 使其修改生效:

. ~/.zshrc

最后的效果和我们的需求一致,只展示当前目录,欧耶✌🏻

image.png

参考资料

How do I change my $PS1 on a Macbook for oh-my-zsh?