我正在尝试将一个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颜色,但我没有不知道如何,以及是否存在不相容性以及它在哪里。
答案 0 :(得分:0)
@
标记不是 terminfo 描述的一部分;它们在原始texinfo文件中使用,以防止解释花括号。您正在阅读的内容是从不了解标记的任何部分的人那里剪切/粘贴...
如果没有 @
标记,您将拥有常量,例如算术中使用的%{65536}
。
结尾的"%dm"只是第三个参数,即RGB中的蓝色值(注意还有另外两个"%d"标记),最后一个字符" m"。