如何保存远程服务器上的终端颜色?

如何保存远程服务器上的终端颜色?

我在 中定义终端颜色~/.Xresources。例如,对于深蓝色,我有一条线*color4: #7cafc2。这在我的本地终端上有效。

当我通过 ssh 连接到远程服务器时,某些终端程序会使用完全不同的颜色。例如,ls使用深蓝色打印目录名称,在黑色背景上难以阅读。

有趣的是,如果我使用此答案中的脚本显示所有颜色https://askubuntu.com/a/279014/1055185深蓝色阴影甚至不在显示颜色列表中。因此,ls 并非使用了与方案不同的颜色。它使用了完全不同的配色方案。

远程服务器上的一些其他程序,例如 vim 编辑器可以正确显示颜色,因为我在本地机器上的 .Xresources 中设置了它们。

什么可能会覆盖我的颜色设置,我该怎么做才能在远程机器上获得我喜欢的颜色?

答案1

如果您使用的是终端 SSH 会话(而不是通过 X11 转发在远程计算机上运行终端仿真程序),则显示的颜色完全由本地终端选择。远程系统唯一能影响终端颜色的事情就是发送转义序列;然后您的本地终端会解释该序列并决定显示什么。

您需要查看的是两个系统上的 值TERM,您可以通过运行 来做到这一点echo $TERM。看看内容可能也很有趣echo $COLORTERM,因为如果设置为 ,某些程序将启用真彩色模式truecolor

一般情况下,大多数以或TERM结尾的终端都支持真彩色,所有以 结尾的终端都支持 256 色。您的程序可能发送的是真彩色序列或不在正常 16 色调色板中但属于扩展的 240 种颜色之一的颜色。-256color-direct-256color

如果要查看转义序列,可以调用程序script,运行ls,然后退出生成的 shell script。这会将终端会话的全部内容保存到文件中,然后您可以使用或typescript等程序检查正在使用的颜色序列。odxxd

如果您更喜欢标准的 16 色调色板,您可以调整终端仿真器以使用TERM缺少-256color-direct前缀的值。具体操作取决于您的系统和终端仿真器,因此您应该查阅文档。

相关内容