gpt4 book ai didi

macos - mac os x 终端中的奇怪行为

转载 作者:行者123 更新时间:2023-11-29 09:24:17 25 4
gpt4 key购买 nike

我开始使用 Mark Dotto ( http://markdotto.com/2013/01/13/improved-terminal-hotness/ ) 的这段代码来让我的终端更性感。我只是复制了代码而没有编辑它,所以在我的 .bash_profile 我添加了:

export PS1='\[\e[0:35m⌘\e[m \e[0:36m\w/\e[m \e[0:33m`git branch 2> /dev/null | grep -e ^* | sed -E  s/^\\\\\*\ \(.+\)$/\(\\\\\1\)\ /`\e[m\]'

一切正常,但有一件奇怪的事情:当我输入 3 个或更少的字符然后我点击退格键时,它会删除所有内容,甚至是左侧的信息(路径和 git 分支)。这可能没问题,但问题是当我在那之后继续输入时,我开始输入的命令仍然在这里(但隐藏了)。我猜你不明白所以我会尝试展示一些代码:

# this is what my prompt looks like
~/my/path/ (branch) |

# I start typing a command
~/my/path/ (branch) ls|

# now I hit backspace once
|

# everything is removed
# but if I type something else then hit return
git st|

# it throws an error as the `l` from the previous command is still here
-bash: lgit: command not found

我完全知道这个 bash_profile 是如何工作的,有人可以帮忙吗?谢谢

最佳答案

您的 PS1 变量中似乎有一些不正确的语法,这导致了一些意外错误。试试这个修订版:

export PS1='\[\e[36m\]\w \[\e[33m\]`git branch 2> /dev/null | grep -e ^* | sed -E s/^\\\\\*\ \(.+\)$/\(\\\\\1\)\ /` \[\e[0m\]'

(注意:我单独留下了 git ... grep ... sed 管道,只编辑了与提示本身相关的部分。)

编辑 - 取出 0: 部分,颜色实际起作用。 (即 \[\e[36m\] 而不是 \[\e[0:36m\])

下面是对那里发生的事情的分割:

  • \[\e[36m\] - 此 block 设置前景文本颜色(浅蓝色/茶色)
  • \w - 当前工作目录
  • \[\e[33m\] - 设置不同的文本颜色(黄色)
  • git ... grep ... sed - 检索您当前的 git 分支
  • \[\e[0m\] - 将文本颜色重置为白色,这样您就不会以黄色输入命令

如果您不关心颜色,提示是一件相当微不足道的事情。色 block 使它变得有点复杂,并且(如您所见)容易出错。

关于macos - mac os x 终端中的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14648034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com