shell 如何在fish/tile提示符中只显示当前目录名而不显示整个路径(pwd)?

yqkkidmi  于 2023-06-24  发布在  Shell
关注(0)|答案(2)|浏览(148)

早上好,我在Debian上安装了fish(版本3.6.1)和tide(版本5.5.1)。我配置了tide,选择了以下选项...提示样式(3)彩虹提示颜色(1)真彩色显示当前时间?(1)无提示分隔符(2)垂直提示头(2)模糊提示尾(2)模糊提示高度(1)单行提示间距(2)稀疏图标(2)多图标
这个提示符对我来说一切都很好,直到我进入几个目录,比如cd ~/Development/freecodecamp/ResponsiveWebDesign/C01\ Learn\ HTML/,结果是我想要的░▒▓    ~/Development/freecodecamp/ResponsiveWebDesign/C01 Learn HTML   master ▓▒░░▒▓    C01 Learn HTML   master ▓▒░
对默认fish/tide安装的唯一修改

cat ~/.config/fish/conf.d/10-camechi-config.fish
# My configurations for fish shell   20230615

function fish_greeting
    fortune
end

if type -q exa
    alias ll "exa -l -g --icons"
    alias lla "ll -a"
end

set -gx PATH $HOME/bin $HOME/.local/bin $PATH

My Screen我需要必要的帮助才能获得所需的提示。
我已经阅读了文档,并尝试了一些旧的提示,从论坛/网站。使用basename(pwd)或basename($PWD)给予类似文本的提示符。
我希望当前目录只与花式提示在图像中;)
谢谢你

qmelpv7a

qmelpv7a1#

这不是潮汐能做的事。它没有一个选项-看看他们的wiki。
也就是说,潮汐只是一堆鱼脚本,所以如果你愿意,你可以调整它。然而,它是以一种相当特殊的风格编写的,不太适合重写特定的函数。
您可以 * 尝试 * 将_tide_pwd改为

function _tide_pwd
    path basename -- $PWD
end

(使用fish的path内置命令来避免通常非常慢的basename命令)
最简单的方法是使用funced _tide_pwdfuncsave _tide_pwd
这可能会起作用,除非潮汐造成阻碍。
除此之外,考虑在tide repo上打开一个问题。

mwecs4sa

mwecs4sa2#

我成功地得到了我想要的提示,只显示了当前目录名。感谢@faho的有用提示。
我在conf.d目录中创建了一个fish脚本15-camechi_tide_pwd.fish,而不是直接更改functions目录中的_tide_pwd.fish。下面是15-camechi_tide_pwd.fish的内容

set_color -o $tide_pwd_color_anchors | read -l color_anchors
set_color $tide_pwd_color_truncated_dirs | read -l color_truncated
set -l reset_to_color_dirs (set_color normal -b $tide_pwd_bg_color; set_color $tide_pwd_color_dirs)

set -l unwritable_icon $tide_pwd_icon_unwritable' '
set -l home_icon $tide_pwd_icon_home' '
set -l pwd_icon $tide_pwd_icon' '

eval "function _tide_pwd
    if set -l split_pwd (string replace -r '^$HOME' '' -- \$PWD | string split /)
        test -w . && set -f split_output \"$pwd_icon\$split_pwd[1]\" ||
            set -f split_output \"$unwritable_icon\$split_pwd[1]\"
        set split_output[-1] \"$color_anchors\$split_output[-1]$reset_to_color_dirs\"
    else
        set -f split_output \"$home_icon$color_anchors\"
    end
    string join -- / \"$reset_to_color_dirs\$split_output[1]\$(basename (prompt_pwd))\"
end"

Image of my terminal

相关问题