Suse 11 与 Suse 10 的差异会影响终端颜色吗?

Suse 11 与 Suse 10 的差异会影响终端颜色吗?

我有我的点文件github 上的版本(无耻的叉别人的好作品)。在工作中,我将它们放在中央 Linux 服务器(SuSE Enterprise Linux 10)上。我将它们从中央管理服务器同步到目标服务器(它们通常没有外部 http 访问权限)。

我们已经推出了 SuSE Enterprise Linux 11,我注意到在这些服务器上,我的配置文件设置中的“红色”或洋红色 bash 提示颜色似乎不起作用。同样,我的 vim 配色方案设置也不起作用 - 例如,搜索词不突出显示,而是消失。红色和黄色不受尊重。

有人可以向我指出这些 SLES 11 机器上可能不同的环境变量或设置吗?下面是我的 SLES10 与 SLES11 登录的屏幕截图,其中点文件同步(例如 .bash_profile、.bash_prompt、.vimrc 等)。

$TERM两台服务器上都是xterm-256color. **查看更新说明

从 SLES10 服务器: vim 会话,sles 10,尊重配色方案

相同的点文件,但在 SLES11 服务器上: vim 会话,sles 11,部分采用配色方案

更新

  • 我注意到,如果我直接从我的工作站进行 SSH 与从 SLES10 实用程序服务器进行 SSH,$TERM 会有所不同。我相信 TERM 是从实用程序服务器转发的。
  • .bash_提示符init 脚本集基于来自我已确认不在 SLES11 服务器映像上的包$TERM的输出。如果不运行或不可用,则未设置或infocmpncurses-develinfocmp$TERM无论脚本运行之前是什么
  • 如果$TERM是继承的(已设置),则.bash_提示符infocmp脚本条件逻辑当前在不运行时保持不变。
  • .bash_提示符然后脚本使用tput命令来初始化几个带有颜色代码的变量 - 值远高于默认的 8 种颜色。tput受 影响$TERM

我当前的理论:我的PS1安装脚本可能会发出一些不受支持的终端值 - 根据受不正确/不支持的命令的条件逻辑提前设置$TERM。这会“搞乱”后续命令,例如vim.

任何人都可以根据他们对系统的理解tput和影响来证实这个理论吗?ncurses我发觉到文章关于 ncurses 如何在终端中启用更多颜色值。

答案1

您确定这不是(部分)vim配置问题吗?

vim其文件类型检测主要基于全名(例如.profile)或扩展名(.sh)。您提供的文件名为 (我相信) .bash_prompt,它与已知的 bash 或 shell 类型不匹配。

当你加载它时,是什么检测到的类型,每个系统上都有不同吗?

 :set filetype?

如果不是filetype=sh那么尝试

 :set syn=sh

(我猜至少有一个说conf文件类型,它突出显示#注释TODO' "引用的字符串)。

我怀疑 SLES 使用了一个不同的vim-data包,它应该包含各种语法和颜色脚本,检查它是否安装在 SLES11 系统上。

要查看行编号应用了哪些格式,请执行以下操作:

:highlight LineNr

如果您没有看到ctermfg=3(地面颜色终端=黄色),那么这就解释了为什么黄色“缺失”。

检测到的文件类型的更改将解释为什么突出显示的字符串上“缺少”洋红色(顺便说一句,红色和洋红色不是同一颜色),并且如果 LineNr 发生更改,则“缺少”黄色。

如果您有xterm 源手头,您还可以运行一些颜色测试脚本,这些脚本可以查询所有颜色条目:

perl vttests/256colors2.pl            # fast, show all colors
perl vttests/query-color.pl 0-15      # slow, uninterruptable

您可能还会发现颜色测试.vim脚本有用,启动vim并运行

:runtime syntax/colortest.vim

在 中vim,运行:help xterm-color以获取有关确保基色按预期设置的进一步建议。

试试这个来检查 Xterm 认为它的基色应该是什么(仅在 XTerm 启动时读取):

xrdb -query | grep -i vt100.color

相关内容