【问题标题】:Color mode issue in CONEMU -> cygwin -> EMACSCONEMU -> cygwin -> EMACS 中的颜色模式问题
【发布时间】:2015-03-08 01:17:24
【问题描述】:

当我从 cygwin 运行 EMACS 而从 ConEmu 运行 EMACS 时,会显示 emacs 颜色主题。

但如果我在没有 conemu 的情况下运行相同的配置,我可以看到主题正确显示。

我如何设置我的 conEmu 以正确显示 256 色并显示 EMAC 中的所有颜色主题。

我的设置:

Environment: Windows 7
Command Prompt : ConEmu 
emulator : cygwin
editor : EMACs

编辑:我用过

alias emacs='TERM=xterm-256color emacs'

之后,ConEMU 会显示中间有空格的窗口。在 cygwin 提示符下运行良好。

【问题讨论】:

    标签: emacs cygwin conemu


    【解决方案1】:

    如果您在控制台窗口中运行 emacs,它可能正在使用 termcap/terminfo。在这种情况下,它会注意 $TERM 环境变量。也许当您设置 coneum+cygwin 配置时,$TERM 值与您设置它的其他方式不同。

    从技术上讲,termcap 不支持 256 色,因此无论 $TERM emacs 使用什么都是一种折衷方案(恰好可以使用的特殊值)。这在 ncurses 常见问题解答中提到:Why not make "xterm" equated to "xterm-256color"?

    某些程序(例如 PuTTY)允许为其进程设置环境变量。我在 ConEmu 的 documentation 中看不到这一点。如果它缺少该功能,我想您可以根据需要在 Windows 环境或 .bashrc 中设置 TERM

    关于 256 色的 Emacs 的一般主题:

    ConEmu 的 wiki 中有一个提示可能有用:它指出

    Vim 的可执行文件必须命名为“vim.exe”;

    这让我怀疑 ConEmu 有一些特殊功能,可以在设置其他两个配置设置(来自 wiki)时查找这个特定名称:

    Features 页面上检查选项“Inject ConEmuHk”和“ANSI X3.64 / xterm 256 颜色”; 在Colors 页面上选中“TrueMod (24bit color) support”选项;

    如果是这样,您可以尝试一种解决方法,通过

    • emacs.exe 重命名为vim.exe
    • 添加一个名为emacs.bat的批处理文件,包含

      @echo off

      emacs.exe %*

    如果您碰巧已经有了vim.exe,则可以修复批处理文件以使用emacs.exe 的实际路径名(但这应该足以开始研究解决方法)。

    【讨论】:

    • 我启用了 256 色模式,之后它在 cygwin tty 中运行起来就像一个魅力......但是相同的配置,即更新 cygwin(在 conemu 上运行)到 256 色模式,没有工作.
    • 但是您没有评论 $TERM 的价值是什么。可能工作配置已将 TERM 设置为 xterm-256color。 (如前所述,它的常规定义不适用于 termcap,但一些打包程序有一个“有效”的缩减版本,例如,在引用的示例中使用匹配 t_AB 和 t_AF 的功能vim)。
    • 更新了问题:我更新了 $TERM ,这样做之后我只能在 cygwin 中看到 256 种颜色,在此之前它只支持 8 种颜色模式。但是当我通过 conEMU 加载 cygwin 时,我会在每条线之间看到黑色的黑色空线。
    • 您是否检查过您的解决方案只是您的假设?
    • 我提供了它作为一种可能的解决方法。也许您可以解释为什么它不起作用。那会很有帮助。
    【解决方案2】:

    Cygwin 或 Msys 不支持 ConEmu 中的 256 色。他们不知道 ConEmu 可以处理 xterm-256 并且他们在内部进行处理。当然,它们会遇到 16 色的标准控制台限制。

    wiki1wiki2 了解更多信息。

    我只知道一个应用程序 - official Vim - 它可以是 configured 在 ConEmu 中使用 xterm-256。

    【讨论】:

    • Wiki 不包含与此问题相关的信息。
    • 尤其是关于 vim 的 cmets 并没有给读者足够的信息来理解正在解决的问题。
    • 嗨 Maximus,tnx 供参考,几天前我遇到了这个 VIM hack,但我无法对 emacs 做同样的事情。 VI 和 EMACS 都是正确的术语编辑器,因此可以使用 EMAC 完成类似的 hack。
    • 两个 ConEmu wiki 条目相互矛盾:Vim(和其他 termcap 应用程序)可以配置为与 cygwin+conemu 一起使用)或者不能。或者也许(如果是这样,应该改进 wiki),ConEmu 有硬编码的行为来了解“vim.exe”(?)
    • @ThomasDickey 如果您仔细阅读我的回答和 wiki,您会明白没有任何矛盾。提示:official vim 不是用 cygwin 构建的。
    猜你喜欢
    • 1970-01-01
    • 2014-06-10
    • 1970-01-01
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多