微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

编辑 ~/.zshrc 文件 - 如何仅向目录而不是整个提示添加颜色?

如何解决编辑 ~/.zshrc 文件 - 如何仅向目录而不是整个提示添加颜色?

我只想为目录着色,而不是为 .txt 等其他文件着色

这是我当前的 .zshrc:

PROMPT='%n%F{086}—%f%M %F{057}::%f %F{028}%~%f %F{057}»%f '

如果我去掉最后一个 %f PROMPT='%n%F{086}—%f%M %F{057}::%f %F{028}%~%f %F{057}» ',它会将所有文件类型的颜色设为相同的 057 颜色。

如何只针对要应用颜色的目录并将它们自己的颜色与 057 颜色区分开来?

解决方法

您无法通过提示配置命令行文件类型突出显示。发生的情况是,因为您没有重置前景色 (['a','bcd','d','e','f'] ),它开始渗入您的命令行。

如果您想突出显示命令行的某些部分,您需要执行以下操作:

  1. 创建一个函数。
  2. 在那里,解析命令行以获取文件名。您可以使用 %f 将命令行拆分为 shell 词。见http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion-Flags
  3. 使用 glob qualifiers 过滤不同类型文件的 shell 词。例如,words=( ${(Z+C+)BUFFER} ) 将获取所有属于目录的单词。
  4. 使用此信息和 region_highlight special array 突出显示命令行的正确部分。
  5. 最后,使用 add-zle-hook-widget 将您的函数设置为 dirs=( $^words(/) ) 钩子,以便每次重绘命令行时都会调用它。
,

我能够根据 ls

通过编辑 man ls 为目录添加颜色

.zshrc 中添加:

alias ls='ls -G'

export CLICOLOR=1

export LSCOLORS=gxFxCxDxBxegedabagaced

website 或通读 man ls 有助于了解如何在 LSCOLORS 变量中设置所需的颜色。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。