在prompt.zsh中的路径后添加美元符号
我想在提示符中的路径后添加美元符号 当前提示为:在prompt.zsh中的路径后添加美元符号,zsh,prompt,Zsh,Prompt,我想在提示符中的路径后添加美元符号 当前提示为: .oh-my-zsh git:(master) .oh-my-zsh git:(master) $ 通缉令是: .oh-my-zsh git:(master) .oh-my-zsh git:(master) $ 我试图在~/.zshrc中修改提示符,但没有成功 提示符='%{$fg_粗体[红色]]}➜ %{$fg_bold[green]]]}%p%{$fg[cyan]]}%c%{$fg_bold[blue]]}$git_prompt_
.oh-my-zsh git:(master)
.oh-my-zsh git:(master) $
通缉令是:
.oh-my-zsh git:(master)
.oh-my-zsh git:(master) $
我试图在~/.zshrc中修改提示符,但没有成功
提示符='%{$fg_粗体[红色]]}➜ %{$fg_bold[green]]]}%p%{$fg[cyan]]}%c%{$fg_bold[blue]]}$git_prompt_info%{$fg_bold[blue]]]}$%%{$reset_color%}编辑提示变量很好,但您可能只想更改所有提示主题的zsh行为,而不必进入并修改每一个提示主题 %在你的主题中。 %在源代码中是硬编码的。但编辑起来很简单。 您可以在源代码中的prompt.c文件中找到有问题的行,特别是当前的734行。 有关守则是: 案例: addbufspc1; *bv->bp++=privassected?:“%”; 打破 您所要做的就是将%更改为您想要的任何字符,可能是$,构建程序并替换您的zsh安装。 那可能会很痛苦。您还可以修补当前二进制文件以替换所需的任何字符。 您只需将单个字节从0x25%更改为0x24$。 问题是,很难在zsh二进制文件中找到它的位置! 在我的Ubuntu 20.04、zsh 5.8中,我发现:
$ objdump -D zsh | less
8af87: e8 84 e4 01 00 callq a9410 <privasserted@@Base>
8af8c: 4c 8b 2d fd 49 05 00 mov 0x549fd(%rip),%r13 # df990 <keyboardhackchar@@Base+0x210>
8af93: 0f b6 74 24 10 movzbl 0x10(%rsp),%esi
8af98: 85 c0 test %eax,%eax
8af9a: b8 25 00 00 00 mov $0x25,%eax
8af9f: 0f 44 f0 cmove %eax,%esi
8afa2: 49 8b 45 18 mov 0x18(%r13),%rax
8afa6: 48 8d 50 01 lea 0x1(%rax),%rdx
坦率地说,我甚至不确定这里的大多数指令都做了什么,但很容易看出0x8af9a的指令就是罪魁祸首。使用一个十六进制编辑器ghex,我用一个0x24替换了那里的0x25,现在zsh显示一个$prompt!
这比下载zsh源代码并重新编译要容易,但我花了一段时间才找到正确的补丁指令。二进制文件中似乎没有很多privassected调用的实例,因此您可能可以逐个检查所有这些实例,看看哪一个适合
希望这是有帮助的!我是一个bash用户,这个%让我非常恼火,所以我拒绝尝试zsh。现在我可以试一试。只需在提示符后追加$PROMPT=$what is?我想用git保持path。大概你会把整个旧提示符替换为