编辑 ~/.zshrc 文件——如何只为目录而不是整个提示添加颜色?
editing the ~/.zshrc file—how to add coloring to only directories and not the entire prompt?
我只想为目录着色,而不是 .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 颜色?
您无法通过提示配置命令行文件类型突出显示。发生的事情是,因为您没有重置前景色 (%f
),它开始渗入您的命令行。
如果要突出显示命令行的某些部分,需要执行以下操作:
- 创建函数。
- 在那里,解析文件名的命令行。您可以使用
words=( ${(Z+C+)BUFFER} )
将命令行拆分为 shell 个单词。参见 http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion-Flags
- 使用glob qualifiers过滤不同类型文件的shell词。例如,
dirs=( $^words(/) )
将为您提供目录中的所有单词。
- 使用此信息和
region_highlight
special array 突出显示命令行的正确部分。
- 最后,使用
add-zle-hook-widget
将您的函数设置为 line-pre-redraw
挂钩,这样每次重新绘制命令行时都会调用它。
我可以根据 man ls
通过编辑 ls
来为目录添加颜色
在.zshrc
中添加:
alias ls='ls -G'
export CLICOLOR=1
export LSCOLORS=gxFxCxDxBxegedabagaced
文章 Adding Color to Your macOS “ls” Output 或通读 man ls
有助于了解如何在 LSCOLORS
变量中设置所需的颜色。
我只想为目录着色,而不是 .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 颜色?
您无法通过提示配置命令行文件类型突出显示。发生的事情是,因为您没有重置前景色 (%f
),它开始渗入您的命令行。
如果要突出显示命令行的某些部分,需要执行以下操作:
- 创建函数。
- 在那里,解析文件名的命令行。您可以使用
words=( ${(Z+C+)BUFFER} )
将命令行拆分为 shell 个单词。参见 http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion-Flags - 使用glob qualifiers过滤不同类型文件的shell词。例如,
dirs=( $^words(/) )
将为您提供目录中的所有单词。 - 使用此信息和
region_highlight
special array 突出显示命令行的正确部分。 - 最后,使用
add-zle-hook-widget
将您的函数设置为line-pre-redraw
挂钩,这样每次重新绘制命令行时都会调用它。
我可以根据 man ls
ls
来为目录添加颜色
在.zshrc
中添加:
alias ls='ls -G'
export CLICOLOR=1
export LSCOLORS=gxFxCxDxBxegedabagaced
文章 Adding Color to Your macOS “ls” Output 或通读 man ls
有助于了解如何在 LSCOLORS
变量中设置所需的颜色。