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 服务器:
相同的点文件,但在 SLES11 服务器上:
更新
$TERM
基础上的输出infocmp
这是从ncurses-devel
我已经确认包是不是SLES11服务器图像。如果infocmp
不运行或不可用,$TERM
则保持未设置或脚本运行之前的任何内容。$TERM
继承(已设置)的事件中,.bash_prompt脚本条件逻辑当前在infocmp
不运行时保持不变。tput
命令与颜色代码来初始化几个VARS -值远高于8色默认。tput
受 影响$TERM
。我目前的理论:我的PS1
设置脚本可能会发出一些不受支持的终端值 - 根据受不正确/不支持的$TERM
. 这会“弄乱”随后的命令,例如vim
.
任何人都可以根据他们对系统的理解tput
和影响来证实这个理论ncurses
吗?我注意到有关 ncurses 如何在终端中启用更多颜色值的文章。
您确定这不是(部分)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)