我在 nano (PHP) 中启用了语法突出显示,但对默认设置不满意,例如我希望将注释显示为非常浅的灰色。
然而,我发现的文档似乎表明我只能写“黄色”、“红色”等颜色。
有没有办法通过十六进制/RGB 代码指定颜色? bash/nano等可以显示的颜色数量有限制吗?显然我对 Linux 世界不是很有经验。
VIM 同样的问题,如果不可能的话我可能会切换到 VIM。
答案1
纳米很小。在这种情况下,它将选择限制为 8 种预定义的 ANSI 颜色(加上明亮/粗体),以便可以使用预定义符号from curses.h
(例如COLOR_BLUE
)作为命名指南。
许多终端支持 256 种预定义颜色; nano 无法利用它们,但是Vim 可以。
与 GUI 不同,允许直接指定颜色的 R/G/B 内容的终端是一个例外,而不是规则。
一些终端(包括我维护的 Xterm)支持转义序列,将调色板颜色 N 更改为指定的 RGB 值,并将前景色设置为调色板中指定 RGB 值最接近的颜色(使用而不是用于背景)颜色)。 \e]4;N;#RRGGBB\a
\e[38;2;R;G;Bm
48
38
然而,更改调色板颜色对于 nano 来说没有用,因为它利用了现存的调色板,与(更大的)Vim 形成鲜明对比,Vim 可以通过附加组件来完成此操作。
在 2015 年 12 月撰写上述内容时,nano 的最新版本是版本 2.4.2(2015 年 7 月)。此时,nano 的 C 语言有 23336 行(7657 条语句),这只是 131621 行文本文件(计算“.po”消息文件)的一小部分。目前(六年后的 2021 年 10 月),程序大小大致相同(行数更少,语句更多),但其他文本文件的源代码树大小大约增加了一倍(253036 行)。它不再完全“小”了(但还远不及 vim 的大小)。在 2020 年 7 月发布 Nano 5.0 的几周前,开发人员为 xterm 的 256 色调色板中的条目添加了八个名称,分别是src/rcfile.c
:
const char Hues[COLORCOUNT][8] = { "红色", "绿色", "蓝色", “黄色”、“青色”、“洋红色”、 “白色”、“黑色”、“正常”、 “粉红色”、“紫色”、“紫红色”、 “泻湖”、“薄荷”、“酸橙”、 “桃子”、“橙子”、“拿铁”、 “灰色”,“灰色”}; 短索引[COLORCOUNT] = { COLOR_RED, COLOR_GREEN, COLOR_BLUE, 颜色_黄色、颜色_青色、颜色_洋红色、 颜色_白色、颜色_黑色、THE_DEFAULT、 204、163、134、38、48、148、215、208、137、 颜色_黑色 + 8, 颜色_黑色 + 8 };
这似乎不可扩展(但至少它使用了 ncurses)。然而,它没有解决OP的问题,因为它没有提供十六进制或者RGB配置方法纳米。在开发 ncurses 时,我创建了一个示例读取X11 rgb.txt文件,作为使程序以彩色显示 X 个像素图文件的一部分。但它也使用 xterm 的数据文件来读取和显示256 色调色板。有关屏幕截图,请参阅讨论图片程序。
答案2
在提出这个问题大约六年后,具有此功能的 nano 版本发布了: