根据当前文件夹更改 Powerlevel9k 段

Oni*_*udo 2 customization zsh

我正在尝试自定义我的 zsh 终端,以我想要的方式获得了大多数东西,但后来我遇到了一个页面,该页面显示了如何制作语言段以显示 Javascript、Python 等。我在我的.zshrc文件中尝试了以下代码:

lang_segment () {
    dir="$(dirname "$PWD")"
    if [[ $dir == *"Dev/python"* ]] ; then 
        echo -n "%{%F{yellow}%K{blue}'\uf81f' Python}"
    fi
    if [[ $dir == *"Dev/javascript"* ]] ; then
        echo -n "%{%F{black}%K{yellow}'\ue781' Javascript}"
    fi

}

POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(os_icon user dir custom_lang_segment vcs)
POWERLEVEL9K_CUSTOM_LANG_SEGMENT="lang_segment"
Run Code Online (Sandbox Code Playgroud)

我正在使用 powerlevel9k 主题。我的想法是,当您 cd 进入文件夹内的dev/python文件夹时,会显示一个带有 Python 文本、图标和配色方案的段,该dev/javascript文件夹或我为此使用的任何语言文件夹都相同。照原样,什么都没有显示。所以我的问题是,有可能做到吗?

Oni*_*udo 5

经过一些修补,我设法解决了这个问题,代码如下所示:

prompt_lang_segment () {
    # Looks up the folder path + name
    dir="$( cd "$(dirname "$0")" ; pwd -P )"
    # Checks if it is the desired language/framework folder, in this case, python
    if [[ $dir == *"Dev/python"* ]] ; then 
        content="\uf81f Python%f"
        "$1_prompt_segment" "$0" "$2" "blue" "yellow" "$content" "#"
    fi
    if [[ $dir == *"Dev/js"* ]] ; then
        content="\ue781 Javascript%f"
        "$1_prompt_segment" "$0" "$2" "yellow" "black" "$content" "#"
    fi

...
}

# Added the lang_segment to the left prompt
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(os_icon user dir lang_segment vcs)
Run Code Online (Sandbox Code Playgroud)

我必须在函数上使用 prompt (prompt_lang_segment而不仅仅是lang_segment)创建一个自定义段,并使用它我必须改变这个:

echo -n "%{%F{black}%K{yellow}'\ue781' Javascript}" 
Run Code Online (Sandbox Code Playgroud)

进入默认的 powerlevel9k 命令以显示段:

"$1_prompt_segment" "$0" "$2" "yellow" "black" "$content" "#"

因此,我为此时有一个文件夹的每种语言/框架添加了一个 if 语句,并且我还必须将文件夹名称 javascript 更改为 js,因为它同时显示了 javascript 和 java 段。

此配置适用于语言/框架文件夹及其所有子文件夹。这是最终结果:

在此处输入图片说明