Emacs shell提示中的颜色

时间:2014-09-13 01:40:40

标签: emacs

是否可以使用bash PS1变量在Emacs shell提示符(提示本身,而不是shell屏幕的其余部分)中使用颜色?我相信我的语法正确(例如,PS1='[\u@\h \[\e[0;31m\]\W\[\e[m\]]\$ ' - 它在术语或ansi-term中有效),但似乎Emacs正在应用comint-highlight-prompt面。我可以将它设置为某种颜色,但它可以工作,但我希望能够将提示的各个部分设置为不同的颜色。我更喜欢使用shell over term或ansi-term,所以我宁愿不切换。

感谢。

4 个答案:

答案 0 :(得分:9)

想出来:comint-highlight-prompt面部设置为从minibuffer-prompt继承,正在设置:weight:foreground:background。删除继承可防止PS1中的颜色被comint-highlight-prompt覆盖。将其添加到我的.emacs文件中。

(set-face-attribute 'comint-highlight-prompt nil
                    :inherit nil)

此外,M-x customize-group <ret> font-lock-faces有助于搞清楚这一点。

答案 1 :(得分:2)

我建议不要全局更改面(因为除了shell模式之外还有许多comint用户),但是通过设置模式挂钩以缓冲区特定方式:

(add-hook 'shell-mode-hook
      (lambda ()
        (face-remap-set-base 'comint-highlight-prompt :inherit nil)))

答案 2 :(得分:0)

我用它来改变终端颜色和mac中的信息,也许可以帮助:

Cyan="$(tput setaf 6)"
NC="$(tput sgr0)" # No Color
export PS1="$Cyan.Where-> \w\n\\$\[$NC\]"

答案 3 :(得分:-1)

您需要使用ansi-term而不是shell来表示终端颜色。