【问题标题】:How to preserve emacs colors from regular terminal to gnu screen如何将 emacs 颜色从常规终端保留到 gnu 屏幕
【发布时间】:2012-06-21 23:34:29
【问题描述】:

为了记录,我使用的是 OSX 雪豹。

当我直接从终端使用 emacs 时,我有一个我非常满意的颜色集(例如用于 c/c++)——黑色上的绿色、红色 cmets、彩色关键字......等等。其中一些是在我的“终端首选项”中设置的,有些在我的 ~/.emacs 文件中(见下文)。当我从屏幕运行 emacs 时,基本的配色方案是相同的(黑底绿),但颜色不同(例如,注释字符是红色的,但不是整个 cmets)——真的很烦人。

任何帮助将不胜感激!

在我的“.emacs”文件中(这在 gnu-screen emacs 中停止工作):

(global-font-lock-mode t)
(custom-set-faces
 '(font-lock-comment-face
   ((((class color) (background light))
     :foreground "tomato")
    )))

在我的“.screenrc”文件中:

shell -$SHELL            # colors still don't work without this
#term xterm-256color    # using this doesn't fix the colors (suggested on some forums)

altscreen on
startup_message off

我认为我的 .screenrc 文件中的命令 'shell -$SHELL' 使屏幕中的命令提示符与默认值相同 --- 它确实使我的命令行显示为 'computername: /DIR/ username$' 而不是 'bash-3.2$'

================================================ ===================

解决方案:感谢 Greg E.

我需要在屏幕上设置我的终端模拟器以匹配我的普通 shell。为此,我添加了

export TERM='xterm-color'

到 ~/.bash_profile

由于某种原因,“~/.screenrc”文件中的“term xterm-color”不起作用。

【问题讨论】:

  • 注意:在 Mac OS X 10.7 Lion 及更高版本上,不建议使用 xterm-color。它代表了 xterm 的一个较旧的分支。在 Lion 中,Terminal 与现代 xterm 足够兼容,您应该使用 xterm-256color(默认)或变体,例如 xterm-16color
  • 感谢@ChrisPage 的提示

标签: macos emacs colors terminal gnu-screen


【解决方案1】:

我的怀疑是,虽然您的终端编译时可能支持超过标准的 16 色,但您的特定版本的 GNU 屏幕可能不支持。我对 OSX 不是很熟悉,但是在 Linux 上,我会检查 tput colors 的输出在普通终端和一个正在运行的屏幕之间是否不同(如果 tput 不可用,我希望会有一些 OSX 等价物)。如果是这样,您可能需要安装(或手动编译)一个不同的屏幕版本,其中包括对其他颜色的支持(通常,最大值为 256,但也常见为 88,而默认最小值为 16)。

编辑:最终,正确的解决方案被证明是手动设置$TERM 环境变量(参见下面的 cmets)。

【讨论】:

  • 有趣的想法;我尝试了“tput colors”(确实有效),它在常规终端和屏幕中都响应“8”......:/
  • @zhermes,$TERM 的当前值是多少,您使用的是什么终端仿真器?输出 8 意味着您的终端,正如它当前配置的那样,不支持除了 8 种基本 ANSI 颜色(以及它们的明亮/粗体对应物,总共 16 种)之外的任何东西。因此,像"tomato" 这样的颜色可能会被智能解析为"red"。如果可能,请考虑安装支持 256 色的 xterm。此外,this page 可能会有所帮助。您可以尝试设置不同的$TERM 值,看看tput colors 输出是否发生变化。
  • 有趣...我对此的怀疑是他们都说'8',而唯一的问题是其中一个。所以也许有不同的算法来转换“番茄”? 'echo $TERM' 产生“xterm-color”,当我在屏幕中执行相同操作时,它只会显示“屏幕”......这是我展示我的哑巴的地方,我以为我在 使用 终端,不是模拟器。 ?
  • @zhermes,“终端”和“终端仿真器”之间的区别是一种迂腐而晦涩的命名法;如果您真的很好奇,请参阅the relevant Wikipedia page。无论如何,我解决颜色不一致的建议是将term xterm-color 添加到您的~/.screenrc。如果由于某种原因失败,您还可以尝试在 bash 配置文件中添加类似以下内容(即~/.bashrc,以及~/.bash_profile~/.bash_login~/.profile/etc/profile 之一):@ 987654339@.
  • 非常感谢!它在 .screenrc 中不起作用,但在 .bash_profile 中起作用(我的 ~ 中没有“.bashrc”)
猜你喜欢
  • 2010-09-09
  • 2011-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-27
  • 1970-01-01
相关资源
最近更新 更多