如何在zsh提示符中获取绝对路径?

22

我要从bash转到zsh。

我想更新我的新zsh提示符,并寻找方法,但我只发现通过oh-my-zsh的“解决方案”。

目标:

Location: ~/dir_1/dir_1_1/dir_1_1_1

我已经有了:

Location: dir_1_1_1

代码(来源)

 PS1='${SSH_CONNECTION+"%{$fg_bold[green]%}%n@%m:"}%{$fg_bold[green]%}Location: %c%{$reset_color%}$(git_prompt_info) '

2
dir_1/dir_1_1/dir_1_1_1 不是完整路径。不确定您想要什么,但大多数人使用 %~%n~ 而不是 %c,其中 n 是要显示的尾部组件的数量。无论如何,%c 已被弃用。请阅读 http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html。 - 4ae1e1
谢谢@4ae1e1,这正是我在寻找的。 - Horacio
4个回答

27

为了保留原始提示格式(颜色、git信息和可能的其他自定义),除了与路径信息相关的内容,您可以在~/.zshrc文件的末尾添加以下内容:

PROMPT=${PROMPT/\%c/\%~}

正如@caleb-adams@fend25所指出的,关键是将%c(仅文件夹名称)替换为%~以包括完整路径(或在~下时从$HOME绝对)。有关更多信息,请参见http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html

这对我没有用,在zsh v5.8.1上。我将其添加到我的.zshrc文件中,然后重新加载它,但提示仍未显示完整路径。 - Raleigh L.
这对我来说在zsh 5.9上也直接不起作用。 - James Hiew

14

将类似bash的目录路径添加到提示符中的最简单方法。只需将以下内容添加到~/.zshrc文件中:

setopt PROMPT_SUBST
PROMPT='%n@%m: ${(%):-%~} '

路径部分是${(%):-%~}。根据您的生活方式,可以添加颜色:)

14
根据上面评论中Horacio Chavez提到的内容,你需要在这里查看:http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html,了解如何更改在zsh中显示的路径的详细信息。
如果你想要相对于用户文件夹的路径,可以在你的zsh-theme文件中包含%~。你的提示现在应该像这样:
PS1='${SSH_CONNECTION+"%{$fg_bold[green]%}%n@%m:"}%{$fg_bold[green]%}Location: %~%{$reset_color%}$(git_prompt_info) '

注意,我只更改了您提示中的一个字符。将%c换成了%~%c仅会给出当前目录(请参见上面的文档链接或此处

要获取完整路径,您可以使用%/


0
export PROMPT=${PROMPT//\%c/\%d}

只需将上述代码添加到.zshrc文件中,然后再次执行source命令。
因为%c代表名称,%d代表完整路径。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接