从 iTerm2 通过 SSH 连接到 Linux 计算机时,颜色会有所不同。我怎样才能将它们标准化?

从 iTerm2 通过 SSH 连接到 Linux 计算机时,颜色会有所不同。我怎样才能将它们标准化?

最初将此发布在苹果堆栈交换,但我怀疑解决方案可能是Linux-ey,例如向我的.bashrc.

目前,当我通过 SSH 连接到 Linux 机器时,lsVIM 中的输出颜色和语法着色与本地机器上的颜色不同。显示的颜色未在我的配置文件...颜色...ANSI 颜色中定义,并且包括丑陋的深棕色“黄色”。如何强制远程会话中的文本与我的 ANSI 颜色相匹配,以便颜色始终保持一致?

下面是我正在讨论的示例:左边是我本地计算机上的 VIM 会话,右边是 SSH 会话中的 VIM 会话。注意那可怕的棕色。

这是ls问题的一个例子——颜色不同。

在此输入图像描述

答案1

终端 vim 使用终端提供的颜色(大概是您选择的 ANSI 颜色,除非您的终端提供 256 色模式或可设置颜色),但它使用的颜色中的哪一种是由 vim 配色方案以及它是否相信背景控制的是亮还是暗。

您可以通过 来检查背景是否设置为浅色或深色:set background?。您可以用普通方式更改它(例如,:set background=dark)。

您可以通过运行检查当前的配色方案:colorscheme并通过运行设置它:colorscheme «NAME»。至少在这里,vim 将以制表符方式完成名称,让您看到所有可用的名称。

找到您喜欢的设置后,您可以将它们添加到您的~/.vimrc.

编辑: ls颜色(使用 GNU coreutils)由环境变量设置LS_COLORS;请参阅info dircolors或 (如果这不起作用)man dircolors。尽管这可能有点困难,因为您的 Mac OS Xls和 GNU coreutils ls(通常在 Linux 上使用)是完全独立的实现。

答案2

我找到了“ls 颜色不同”问题的答案。您只需要确保ls两台机器上都启用了着色,然后使用这一页使本地 (Mac)LSCOLORS变量中编码的颜色与远程 (Linux) 变量中编码的颜色相同LS_COLORS

ls对于与macOS 默认值匹配的Linux颜色:将其放入.bashrcMac 上:

alias ls="ls -G"
export LSCOLORS="exfxcxdxbxegedabagacad"

并将其放入您的.bashrcLinux 机器上:

alias ls="ls --color=always"
export LS_COLORS="di=34:ln=35:so=32:pi=33:ex=31:bd=34;46:cd=34;43:su=30;41:sg=30;46:tw=30;42:ow=30;43"

相关内容