我为我的 OS X 终端编写了这个漂亮而多彩的提示:
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ [\1]/'
}
export PS1="\e]2;\w\a\e[1;30;1m\][\u@\[\033[0;36m\]\h\e[1;30;1m\]:\[\033[0;35m\]\w\e[1;30;1m\]] \[\033[0;31m\](\t) \[\033[0;33m\]\$(parse_git_branch)\n\[\033[0m\]\e[1;30;1m\]\$\[\e[0m\]"
Run Code Online (Sandbox Code Playgroud)
我source ~/.bash_profile它,它工作正常。除了当我使用向上箭头浏览历史时,我会发生一件奇怪的事情。
基本上是source ~/.bash_profile历史命令的开头,成为提示的一部分。当我ctrl+c或enter它恢复正常时,但只要我看到source命令的历史记录,提示就会再次更改。
这是我看过历史然后ctrl+u输入的示例ls:
[user@host:~/Documents] (14:01:40) [branch]
$source ~/.ls
Run Code Online (Sandbox Code Playgroud)
关于这个的任何线索?
您已经完全禁止 bash 的想法,因为它显示了命令历史记录并允许您编辑命令行,因此它已经打印了什么以及它必须擦除/重写什么。这是因为您已经对该提示进行了真正的散列。
\e或\033一致,为你自己的理智。\[和\]严格匹配的非嵌套对。\[and之内\](相反,所有打印序列都不是)。(这就是为什么当我想要古怪的彩色提示时,我个人更喜欢 Z Shell 及其替代提示扩展机制。它知道诸如%F{green}不打印序列之类的事情,而不必被告知;并且它还可以计算出正确的转义序列来自terminfo,而无需将它们硬接线。)
| 归档时间: |
|
| 查看次数: |
1037 次 |
| 最近记录: |