37

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

millermj@Dodore ~/o/workspace

但我宁愿看到

millermj@Dodore ~/o-town/workspace
4

6 回答 6

50

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

在此处输入图像描述

于 2016-05-20T03:47:58.220 回答
17

这是我的版本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使该行为在以后的会话中持续存在。

于 2010-04-05T18:31:05.840 回答
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/fish/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/functions/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
于 2014-10-31T20:14:09.753 回答
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,我没试过。

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

于 2020-10-14T05:20:53.290 回答
0

只是想如果你偶然发现这个并且你的鱼没有响应fish_prompt_pwd_dir_length变量尝试升级 omf,然后更新你正在使用的 omf 主题,我会提醒大家。然后做一些选择不同主题的组合,重新打开外壳,然后再次选择不同的主题。这对我有用。祝你好运!

于 2020-12-10T02:32:49.497 回答
-4

prompt_pwd功能决定要显示的功能。你应该能够编写自己的版本来获得你想要的。

于 2009-06-08T04:47:54.513 回答