【问题标题】:Shortening my prompt in Zsh缩短我在 Zsh 中的提示
【发布时间】:2016-09-14 04:39:20
【问题描述】:

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

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

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

我最近的尝试是尝试从https://stackoverflow.com/a/171564/2416097复制提示块

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

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

任何帮助表示赞赏!

【问题讨论】:

  • 是什么让你的提示时间这么长?例如,它是否显示完整路径?你甚至没有显示你有什么提示,例如,你的.zshrc 中的实际PROMPT 是如何设置的?
  • 这个问题与 StackOverflow 定义的编程无关。 可能在相关网站superuser.com 上更合适。考虑使用 Q 底部的标志链接并要求版主移动它。请不要在 2 个不同的网站上发布相同的 Q。谢谢,祝你好运。
  • 或许可以考虑接受答案或帮助我们为您提供帮助
  • 它绝对是编程,就像 bash 导出之类的东西一样。在你冲进去把人放下之前先想想。如果修改 zsh 资源文件不是编程我不知道是什么。

标签: shell terminal zsh zshrc oh-my-zsh


【解决方案1】:

如果您像我一样偶然发现这篇来自macOS' zsh 的帖子并想缩短那里的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 ~ %

【讨论】:

    【解决方案2】:

    将此添加到~/.zshrc

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

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

    【讨论】:

    • 这是对显示目录的限制,而不是字符。更好的海事组织。
    • 我更喜欢这个,因为不需要扩展。谢谢!
    【解决方案3】:

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

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

    用这个:

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

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

    【讨论】:

      【解决方案4】:

      首先,您必须将主题复制到不同的主题中,以便根据自己的喜好对其进行自定义。

      • 复制agnoster.zsh-theme 到例如mytheme.zsh-theme 并在您的 .zshrc 中选择它
      • 然后根据自己的喜好修改主题

      我查看了 agnoster theme 并找到了一个可以节省空间的地方。

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

      可以改成

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

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

      简短的解释是:

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

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

      如需更多定制需求,请查看zsh: 13 Prompt Expansion

      【讨论】:

      • 这个建议的解决方案确实做了一些事情!这是朝着正确方向迈出的良好一步;但是建议的格式化程序只是完全摆脱了路径,这也不好。
      • 所以你现在使用angoster.zsh-theme文件的本地ocpy?您希望保留提示的哪些部分。然后我们可以找到一种方法来根据您的喜好对其进行修改。
      • 我认为拥有最后两个扩展会很有用。类似'~/.../outer_folder/current_folder'
      • 我复制了一个名为 myagnoster.zsh-theme 的主题,并在其中进行编辑
      【解决方案5】:

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

      只需将其设置为您的 zsh 主题,然后在 .zshrc 中设置

      POWERLEVEL9K_SHORTEN_DIR_LENGTH=2

      确保只列出两个目录。

      自述文件中概述了替代选项。

      【讨论】:

      猜你喜欢
      • 2022-12-16
      • 2015-07-31
      • 2019-07-20
      • 1970-01-01
      • 1970-01-01
      • 2013-08-25
      • 1970-01-01
      • 2010-11-10
      相关资源
      最近更新 更多