无法在ConEmu中启用256种颜色

时间:2012-10-16 11:10:08

标签: terminal conemu ansi-colors 256color

我正试图在梦幻般的ConEmu-Maximus5控制台中获得256种颜色。

更新:现在它只显示8种颜色。我知道因为'$ tput colors'输出是'8'

我已关注instructions并已激活:

  • TrueMod(24位颜色)支持
  • 注入ConEmuHk
  • ANSI x3.64 / xterm 256色

我不明白如何处理'检查是否有缓冲区/幻灯片。'

  • 我在Windows 7中。
  • 我使用自定义直接链接启动ConEmu,因此它加载了cygwin bash文件。
"C:\Program Files\ConEmu\ConEmu64.exe" /cmd ""C:\cygwin\bin\bash.exe" --login -i"
  • 在我的bashrc个人资料中,我有 - > export TERM = cygwin
  • 这是我的自定义命令提示符:
    function prompt {

    local RED="\[\033[0;31m\]"
    local GREEN="\[\033[0;32m\]"
    local COOLRED="\e[38;5;173m"
    local COOLGREEN="\e[38;5;113m"
    PS1="$COOLRED\u@\h $LIGHT_COOLGREEN\$PWD \[\e[0m\] > "

    }

    prompt
  • 顺便说一句,ConEmuANSI在ON中的价值。

我有一些屏幕截图:

enter image description here

正如您所看到的,命令提示看起来非常奢侈,因为它不喜欢256色设置。如果我用红色和绿色替换变量COOLRED和COOLGREEN,那么它看起来没问题,但它不是256色。

设置的更多屏幕截图:

enter image description here enter image description here

最后一次拍摄它是cygwin的薄荷。一切都很好。支持全256色。这是一个耻辱的薄荷没有标签。这就是为什么我要搬到ConEmu的原因。

enter image description here

非常感谢您的帮助!

4 个答案:

答案 0 :(得分:12)

Bash不会将ANSI序列发送到控制台。它试图自己处理它们。并且,因为* nix终端通常只有8色(不考虑256色模式),bash使用8色调色板代替16色调色板,这是Windows终端常用的。

我认为,256色可以使用,因为_isatty在该终端中返回零。但它在ConEmu下返回非零值。可能在未来的构建中我解决了这个难题(如何为某些应用程序创建具有PTY功能的真实终端)。

至于问题

事实上,你不需要256色。要重新定义提示调色板,您可以使用“使用背景扩展前景色”功能。在breaf中 - 在ConEmu中设置颜色16,17等,将bash中的提示背景设置为#5(可在ConEmu中配置),然后瞧。

ConEmu“延伸......”处理中有一个小错误。使用build 121016或更高版本。

PS1="\e[30;45m\u@\h \e[34;45m$PWD \[\e[0m\] > "

ConEmu and real console window

ConEmu settings

以下信息与问题不符,但可能有用

当前版本在“整个”控制台缓冲区中不支持256色模式(限制,是的,在计划中将其删除)。

所以,你可以采取两种方式

  • 完全禁用回滚缓冲区(多种方式,例如“cmd -cur_console:h0”)
  • 在滚动缓冲区的底部工作。

答案 1 :(得分:2)

我也无法获得256色支持(颜色会显示,但它们看起来与16色调色板相同)。我切换到“xterm”颜色方案,现在它可以在本机Windows可执行文件(如Python)中使用,但在使用Cygwin的任何东西中都没有。 Cygwin似乎有终止逃逸序列处理,你无法关闭,这会导致ConEmuHk注射失败。

This is documented on the ConEmu wiki, here.

答案 2 :(得分:0)

我遇到了这个奇怪的问题和奇怪的解决方案,并且以某种方式起作用。而且不知道这是否也适用于其他人,只是分享一些信息,以防万一。

我喜欢为控制台着色,并且喜欢利用RGB着色的全部真实256位。 在contumu / CMDer中配置后(我使用了分叉的)instruction。我的256位着色测试看起来像这样。enter image description here。经过一番摸索,并使用我的bash 256bit功能进行了测试。即运行以下命令:

for i in {1..16384}; do echo -en "\e[38;5;${i}mTest";done

*注应该是{1..256},但是我不得不为更长的彩色打印而强制使用它,所以只花了更长的随机数。 给出结果: enter image description here

但是跑步大约2-3次,我突然看到了这种干净的灰色阴影 enter image description here

,然后开始工作。 enter image description here

很奇怪,但是我已经做到了。可能是由于优化原因,CMDer某种程度上没有使用完整的256位,并且在踢进来时被触发了吗?

PS:我的控制台CMDer cmd:

-cur_console:fp -cur_console:d:"C:\WS":P:"<Cobalt>":t:"test":C:"C:\Arbeit\tools\Iconka-Buddy-Ninja.ico" set "PATH=%ConEmuDrive%\Program Files\Git\usr\bin;%PATH%" & "%ConEmuDrive%\Program Files\Git\git-bash.exe" --no-cd --command=%ConEmuBaseDirShort%\conemu-msys2-64.exe /usr/bin/bash.exe -l -i

答案 3 :(得分:-1)

local COOLRED="\e[38;5;173m"

local COOLGREEN="\e[38;5;113m"

那些\e可能来自例如C printf字符串。你不希望它们在shell脚本中。坚持使用原始\033符号。你也错过了结束\]。这些行现在应该是

local COOLRED="\[\033[38;5;173m\]"

local COOLGREEN="\[\033[38;5;113m\]"