Terminal Can';t在ConEmu中启用256色

Terminal Can';t在ConEmu中启用256色,terminal,conemu,ansi-colors,256color,Terminal,Conemu,Ansi Colors,256color,我正在尝试在奇妙的控制台中获得256色 更新:现在它只显示8种颜色。我知道,因为“$tput colors”输出为“8” 我已遵循以下步骤并激活: TrueMod(24位颜色)支持 香港 ANSI x3.64/xterm 256色 我不明白如何处理“检查缓冲区/幻灯片是否正确” 我在Windows7中 我用一个自定义的直接链接启动ConEmu,所以它加载cygwin bash文件 “C:\Program Files\ConEmu\ConEmu64.exe”/cmd“C:\cygwin\b

我正在尝试在奇妙的控制台中获得256色

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

我已遵循以下步骤并激活:

  • TrueMod(24位颜色)支持
  • 香港
  • ANSI x3.64/xterm 256色
我不明白如何处理“检查缓冲区/幻灯片是否正确”

  • 我在Windows7中
  • 我用一个自定义的直接链接启动ConEmu,所以它加载cygwin bash文件
“C:\Program Files\ConEmu\ConEmu64.exe”/cmd“C:\cygwin\bin\bash.exe”--登录-i”
  • 在我的bashrc配置文件中,我有->导出TERM=cygwin
  • 这是我的自定义命令提示符:
功能提示{ 本地红色=“\[\033[0;31m\]” 本地绿色=“\[\033[0;32m\]” 本地冷却=“\e[38;5;173m” 本地COOLGREEN=“\e[38;5;113m” PS1=“$COOLRED\u@\h$LIGHT\u COOLGREEN\$PWD\[\e[0m\]>” } 促使
  • 顺便说一下,ConEmuANSI的值在ON中
我有一些屏幕截图:

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

设置的更多屏幕截图:

最后一张sceen的照片是cygwin的mintty。那里一切正常。支持256色。mintty没有标签真可惜。这就是我想搬到ConEmu的主要原因

非常感谢你的帮助

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\]"

Bash不将ANSI序列发送到控制台。它尝试自己处理它们。而且,由于*nix终端通常只有8色(不考虑256色模式),Bash使用8色调色板,而不是Windows终端常见的16色调色板

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

至于这个问题

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

ConEmu“扩展…”处理中有一个小错误。请使用build 121016或更高版本

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

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

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

所以,你可以走两条路

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

我也无法获得256色支持(颜色会显示出来,但它们看起来与16色调色板相同)。我切换到“xterm”颜色方案,现在它可以在本机Windows可执行文件(如Python)中工作但在任何使用Cygwin的系统中都没有。Cygwin似乎具有无法关闭的终端转义序列处理,这会破坏
ConEmuHk
注入


我遇到了这个奇怪的问题和奇怪的解决方案,不知怎么的,它起了作用。不知道这是否也适用于其他人,只是一些信息共享,以防这会有所帮助

我喜欢给我的控制台上色,并且喜欢使用完整的256位RGB真彩色。 在与conemu/CMDer混淆之后(我使用了分叉的一个)。我的256bit着色测试如下..在经过一点修改并使用bash 256bit功能进行测试后。即运行以下命令:

for i in {1..16384}; do echo -en "\e[38;5;${i}mTest";done
*便笺应该是{1..256},但我必须强制它打印更长的彩色打印,所以只需要更长的随机数。。 给出结果:

但是跑了两三次,我突然看到了这个干净的灰色阴影

然后它就成功了。。

奇怪的是,我让它工作了。可能是因为优化原因,CMDer没有使用完整的256位,当它被启动时会被触发

PS:my 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
-cur\u控制台:fp-cur\u控制台:d:“C:\WS”:P::t:“test”:C:“C:\Arbeit\tools\Iconka Buddy Ninja.ico”set“PATH=%ConEmuDrive%\Program Files\Git\usr\bin;%PATH%”和“%ConEmuDrive%\Program Files\Git bash.exe”--无cd--命令=%ConEmuBaseDirShort%\conemu-msys2-64.exe/usr/bin/bash.exe-l-i

谢谢您的回复。我尝试了您的变量,但仍然没有成功。我尝试了删除自定义颜色提示,以防万一,当我打印AnsiColors256时。ans看起来只能显示8种颜色。
\e
通常类似于转义字符,并且确实是必需的。它们与
printf
无关。请解释我应该在bash中创建什么文件来重新定义提示符?只需在主目录中创建一个名为.bashrc的文件即可。“.bashrc”不起作用,但“.profile”do.更奇怪的是。Bash没有将Esc发送到控制台,而是尝试自己处理它们。给你-8种颜色。这解释了关于.bashrc.Bash_profile和.profile的内容。感谢你的辛勤工作。我确实不需要256种颜色。我只需要大约16种好看的颜色,我可以在颜色部分做到这一点。干杯!@Maximus I很高兴在ConEmu中看到256种颜色-我希望能够看到完全电容的LS_颜色,例如
Bash不向控制台发送ANSI代码
您能详细说明一下吗?因为这是不正确的。
for i in {1..16384}; do echo -en "\e[38;5;${i}mTest";done
-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