根据当前文件夹更改Powerlevel9k段

时间:2018-12-11 16:06:07

标签: 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"

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

1 个答案:

答案 0 :(得分:2)

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

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)

我必须在函数上使用提示(prompt_lang_segment而不是lang_segment来创建自定义细分,并使用它,我必须对此进行更改:

echo -n "%{%F{black}%K{yellow}'\ue781' Javascript}" 

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

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

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

此配置适用于language / framework文件夹及其所有子文件夹。 这是最终结果:

enter image description here