鱼互动壳全路径

时间:2009-05-15 04:34:33

标签: macos unix path fish

Fish Interactive shell中是否有一种方法可以显示完整路径。目前,当我导航到目录时,我得到以下shell。

millermj@Dodore ~/o/workspace

但我宁愿看

millermj@Dodore ~/o-town/workspace

6 个答案:

答案 0 :(得分:32)

使用新的fishshell(v2.3),您可以set -U fish_prompt_pwd_dir_length 0。它将使用完整的路径。我也使用dartfish作为我的主题。见下面的例子:

enter image description here

答案 1 :(得分:16)

这是我的prompt_pwd版本,应显示您要查找的内容:

function prompt_pwd --description 'Print the current working directory, NOT shortened to fit the prompt'
    if test "$PWD" != "$HOME"
        printf "%s" (echo $PWD|sed -e 's|/private||' -e "s|^$HOME|~|")
    else
        echo '~'
    end

end

这将像往常一样显示主目录的波浪号,但删除sed命令,该命令只会在您有几个目录时从每个目录中提取第一个字母。

要修改prompt_pwd,请使用funced。它将允许您以交互方式更改功能。从命令行键入funced prompt_pwd。根据您的喜好显示提示后,请使用funcsave prompt_pwd使该行为在将来的会话中保持不变。

答案 2 :(得分:6)

我个人不喜欢触摸共享/默认设置。 Fish具有很好的功能设计,因此可以利用它。

使用以下内容创建~/.config/fish/functions/prompt_long_pwd.fish

function prompt_long_pwd --description 'Print the current working directory'
        echo $PWD | sed -e "s|^$HOME|~|" -e 's|^/private||'
end

然后只需修改~/.config/fish/functions/fish_prompt.fish即可使用prompt_long_pwd。这是我使用的自定义提示:

<强>〜/的.config /鱼/ config.fish

set -g __fish_git_prompt_show_informative_status 1
set -g __fish_git_prompt_hide_untrackedfiles 1

set -g __fish_git_prompt_color_branch magenta bold
set -g __fish_git_prompt_showupstream "informative"
set -g __fish_git_prompt_char_upstream_ahead "↑"
set -g __fish_git_prompt_char_upstream_behind "↓"
set -g __fish_git_prompt_char_upstream_prefix ""

set -g __fish_git_prompt_char_stagedstate "●"
set -g __fish_git_prompt_char_dirtystate "✚"
set -g __fish_git_prompt_char_untrackedfiles "…"
set -g __fish_git_prompt_char_conflictedstate "✖"
set -g __fish_git_prompt_char_cleanstate "✔"

set -g __fish_git_prompt_color_dirtystate blue
set -g __fish_git_prompt_color_stagedstate yellow
set -g __fish_git_prompt_color_invalidstate red
set -g __fish_git_prompt_color_untrackedfiles $fish_color_normal
set -g __fish_git_prompt_color_cleanstate green bold

<强>〜/的.config /鱼/功能/ fish_prompt.fish

function fish_prompt --description 'Write out the prompt'

    set -l last_status $status

    if not set -q __fish_prompt_normal
        set -g __fish_prompt_normal (set_color normal)
    end

    # PWD
    set_color $fish_color_cwd
    echo -n (prompt_long_pwd)
    set_color normal

    printf '%s ' (__fish_git_prompt)

    if not test $last_status -eq 0
    set_color $fish_color_error
    end

    echo -n '$ '

end

答案 3 :(得分:0)

创建~/.config/fish/functions/prompt_long_pwd.fish,其中:

function prompt_long_pwd --description 'Print the full working directory'
        echo $PWD
end

~/.config/fish/functions/fish_prompt.fish中,将(prompt_pwd) (set_color normal)更改为(prompt_long_pwd) (set_color normal)

(prompt_pwd)用目录的第一个字母替换目录名,有时我也觉得很讨厌。您也可以修改原始命令prompt_pwd,但我还没有尝试过。

此答案是从先前的answer修改而来的,它显示完整目录,同时保留默认提示的其他部分。关键的变化是在~/.config/fish/functions/prompt_long_pwd.fish中的表达式中。

答案 4 :(得分:0)

如果您偶然发现了这个问题,而您的鱼没有响应fish_prompt_pwd_dir_length变量,请尝试升级omf,然后更新您正在使用的omf主题,以为我会提请大家注意。然后进行一些选择,选择不同的主题,重新打开外壳,然后再次选择不同的主题。这对我有用。祝你好运!

答案 5 :(得分:-4)

prompt_pwd函数确定要显示的功能。你应该能够编写自己的版本来获得你想要的东西。