鱼的PS1提示(Friendly Interactive SHell)显示git分支

Ale*_*tos 37 fish

Bash我有我PS1

PS1="\u@\h:\w\$(git branch 2>/dev/null | grep -e '\* ' | sed 's/^..\(.*\)/{\1}/') \$ "

git branch如果我在git repo中,这将显示我的当前.

如何设置PS1in fish以便它会显示我当前的git分支?

Ale*_*tos 110

@glenn已经得到了答案,但我发现了一种更简单的方法来显示鱼的git提示.

从码头,在鱼类,类型fish_config.这将打开一个浏览器窗口.选择第二个选项卡,prompt然后选择Classic + Git`.

这将显示在终端提示符上显示Git所需的命令.将它们复制到您的~/.config/fish/config.fish甚至更简单:单击"使用提示".

这有多棒?

  • 它现在在版本控制系统中称为"Classic + Vcs" (8认同)
  • 您实际上只需要单击"使用提示" - 无需复制! (6认同)
  • 这些命令不再显示.目前的做法是什么? (3认同)
  • 为了找到这个答案最终创建的`fish_prompt`函数,我去了`〜/ .config/fish/functions /`.请注意,这正是鱼无论如何都会读取提示功能的地方,所以它现在是永久性的.如果您在提示符下添加了一个git功能(如show current branch),请打开一个新选项卡并转到git repo以验证配置是否保持不变. (2认同)

gle*_*man 22

我认为这是等价的

function fish_prompt
    set -l git_branch (git branch ^/dev/null | sed -n '/\* /s///p')
    echo -n (whoami)'@'(hostname)':'(prompt_pwd)'{'"$git_branch"'} $ '
end
Run Code Online (Sandbox Code Playgroud)


Spe*_*uex 7

此答案使用已弃用的插入符号重定向到 STDERR2>代替使用。这是编辑

function fish_prompt
    #           Change is here:  vvv
    set -l git_branch (git branch 2>/dev/null | sed -n '/\* /s///p')
    #                            ^^^
    echo -n (whoami)'@'(hostname)':'(prompt_pwd)'{'"$git_branch"'} $ '
end
Run Code Online (Sandbox Code Playgroud)

这是我根据上面的提示使用的彩色提示:

function fish_prompt
    set_color normal
    # https://stackoverflow.com/questions/24581793/ps1-prompt-in-fish-friendly-interactive-shell-show-git-branch
    set -l git_branch (git branch 2>/dev/null | sed -n '/\* /s///p')
    echo -n (whoami)'@'(hostname)':'
    set_color $fish_color_cwd
    echo -n (prompt_pwd)
    set_color normal
    echo -n '{'
    set_color purple
    echo -n "$git_branch"
    set_color normal
    echo -n '}'
    echo -n ' $ '
end

Run Code Online (Sandbox Code Playgroud)