缩短我在 Zsh 中的提示

Shortening my prompt in Zsh

我在让 zsh 缩短我的提示时遇到了很多麻烦。我目前正在使用带有 agnoster 主题和 oh-my-zsh 包管理器的 zsh。

我的提示目前在工作期间变得很烦人,通常在 110 个字符左右,占据了我终端的整个长度,这在美学上不太令人愉悦。

我查看了一些其他人的 .zshrc 并尝试修改他们的提示,但在我的提示中似乎没有任何效果。我试过将很多很多东西复制到我的 .zshrc 中,但没有看到任何效果。

我最近的尝试是尝试从

复制提示块

没有。即使我在包含此块的同时禁用了我的主题,提示仍然是完整的。

此外,我似乎找不到任何关于如何首先格式化我的提示的简单或直接的指南。我在搜索时发现的大多数结果只产生长格式字符串,没有解释或使用说明。

感谢任何帮助!

首先,您必须将主题复制到另一个主题中才能根据自己的喜好对其进行自定义。

  • 复制agnoster.zsh-theme到例如mytheme.zsh-theme 和 select 它在你的 .zshrc
  • 然后根据自己的喜好修改主题

我查看了 agnoster theme 并找到了可以保存的地方 space。

prompt_dir() {
    prompt_segment blue $CURRENT_FG ' %~ '
}

可以改为

prompt_dir() {
    prompt_segment blue $CURRENT_FG ' %25<...<%~%<< '
}

这会将您的路径截断为 25 个字符,并将更多字符替换为 ... zsh 手册(链接如下)中描述了这是如何工作的。

简短的解释是:

  • %25<...< 会将超过 25 个字符的所有内容截断为 ...
  • %<< 基本上会告诉 zsh 在此之后的任何内容都不应该被截断(将截断限制在路径部分)

我留给你去寻找更多可以节省 space 的地方。

如需了解更多自定义需求,请查看 zsh: 13 Prompt Expansion

老问题,我知道,但作为替代解决方案,我刚刚发现 powerlevel9k,agnoster 的扩展(它们看起来几乎相同,除了一些调整),它内置了这个功能。

设置为你的zsh主题,然后在.zshrc中设置

POWERLEVEL9K_SHORTEN_DIR_LENGTH=2

确保只列出两个目录。

自述文件中列出了替代选项。

在 Zsh 主题文件夹中搜索这个文件 agnoster.zsh-theme ,用编辑器打开并更改这段代码 :

prompt_dir() {
    prompt_segment blue $CURRENT_FG ' %~ '
}

用这个:

prompt_dir() {
  prompt_segment blue $CURRENT_FG "%c"
}

这将提示当前目录而不是完整路径。

将此添加到 ~/.zshrc

prompt_dir() {
  prompt_segment blue $CURRENT_FG '%2~'
}

解释性说明:%<N>~ 会将通向当前目录的路径段数限制为 N。即%2~ 将只显示最后两个部分:当前目录及其父目录。

如果您像我一样偶然发现来自 macOS' zsh 的 post 并想缩短那里的 prefix/prompt,我发现这篇文章很有帮助:https://www.makeuseof.com/customize-zsh-prompt-macos-terminal/

我想从提示中删除我的 MacBook 型号的名称,并且能够通过以下步骤实现:

  1. vim .zshrc
  2. 附加PROMPT="%n %1~ %# "
  3. source .zshrc验证或者直接打开一个新终端

之前

chris@Christophers-MacBook-Pro ~ %

之后

chris ~ %