我有我的点文件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 服务器:
相同的点文件,但在 SLES11 服务器上:
更新
- 我注意到,如果我直接从我的工作站进行 SSH 与从 SLES10 实用程序服务器进行 SSH,$TERM 会有所不同。我相信 TERM 是从实用程序服务器转发的。
- 这.bash_提示符init 脚本集基于来自我已确认不在 SLES11 服务器映像上的包
$TERM
的输出。如果不运行或不可用,则未设置或infocmp
ncurses-devel
infocmp
$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