【发布时间】:2017-05-09 22:16:04
【问题描述】:
我正在尝试将 terminfo 字符串从 xterm 转换为可以与 iTerm2 一起使用的字符串,以便get 24bit colors working in emacs。到目前为止我所做的调查和研究使我相信我用来设置 stf24/setb24 的 terminfo 操作代码被 iTerm2 错误地解释了,所以我想了解它们在做什么。
以下是 emacs 需要的自定义值:
xterm-24bit|xterm with 24-bit direct color mode,
use=xterm-256color,
setb24=\E[48:2:%p1%@{65536@}%/%d:%p1%@{256@}%/%@{255@}%&%d:%p1%@{255@}%&%dm,
setf24=\E[38:2:%p1%@{65536@}%/%d:%p1%@{256@}%/%@{255@}%&%d:%p1%@{255@}%&%dm,
# Use semicolon separators.
xterm-24bits|xterm with 24-bit direct color mode,
use=xterm-256color,
setb24=\E[48;2;%p1%@{65536@}%/%d;%p1%@{256@}%/%@{255@}%&%d;%p1%@{255@}%&%dm,
setf24=\E[38;2;%p1%@{65536@}%/%d;%p1%@{256@}%/%@{255@}%&%d;%p1%@{255@}%&%dm,
我知道第一点,例如\e[48:2: 是指定颜色位置(在本例中为背景)和颜色格式(2 表示需要 3 个控制段的完整 24 位 RGB 格式)的转义码。
查看此文档'Supported TERMINFO Manipulation Codes' 我知道它使用%p1 从堆栈中获取参数'1',并对此执行一些其他操作(%/ - division, %& - AND)但我不确定%@ 的含义或者括号中的数字是什么意思%@{65536},以及%dm最后的作用。有人可以帮忙吗?
总的来说,我相信 emacs 只传递了一个参数(大概是 256^3 0-16,777,216 内的一个数字),所以我认为这在某种程度上将它分成了终端需要的 3 种组成 RGB 颜色,但我没有'不完全弄清楚如何,然后是否存在不兼容以及它在哪里。
【问题讨论】:
标签: tty emacs24 xterm iterm2 terminfo