是否可以使用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,所以我宁愿不切换。
感谢。
答案 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来表示终端颜色。