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

Sco*_*lin 7 bash terminal ncurses sles

在 github 上有我的 dotfiles版本(其他人的好作品的无耻分支)。在工作中,我将它们放在中央 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,配色方案部分兑现

更新

  • 我注意到 $TERM 是不同的,如果我直接从我的工作站与从 SLES10 实用程序服务器 SSH 连接。我相信 TERM 是从实用程序服务器转发的。
  • .bash_prompt初始化脚本集$TERM基础上的输出infocmp这是从ncurses-devel我已经确认包是不是SLES11服务器图像。如果infocmp不运行或不可用,$TERM则保持未设置或脚本运行之前的任何内容
  • $TERM继承(已设置)的事件中,.bash_prompt脚本条件逻辑当前在infocmp不运行时保持不变。
  • 所述.bash_prompt脚本然后使用tput命令与颜色代码来初始化几个VARS -值远高于8色默认。tput受 影响$TERM

我目前的理论:我的PS1设置脚本可能会发出一些不受支持的终端值 - 根据受不正确/不支持的$TERM. 这会“弄乱”随后的命令,例如vim.

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

mr.*_*tic 1

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

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

当您加载它时,检测到的类型是什么,每个系统上的类型是否不同?

 :set filetype?
Run Code Online (Sandbox Code Playgroud)

如果不是filetype=sh那么尝试

 :set syn=sh
Run Code Online (Sandbox Code Playgroud)

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

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

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

:highlight LineNr
Run Code Online (Sandbox Code Playgroud)

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

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

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

perl vttests/256colors2.pl            # fast, show all colors
perl vttests/query-color.pl 0-15      # slow, uninterruptable
Run Code Online (Sandbox Code Playgroud)

您可能还会发现colortest.vim脚本很有用,启动vim并运行

:runtime syntax/colortest.vim
Run Code Online (Sandbox Code Playgroud)

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

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

xrdb -query | grep -i vt100.color
Run Code Online (Sandbox Code Playgroud)