介绍
我一直使用浅色背景的终端和深色背景的编辑器(vim
)。在这一点上我不愿意妥协。无论如何,我刚刚从切换xterm
到urxvt
($TERM == rxvt-unicode-256color),主要是因为 xterm 中未解决的 fontconfig/xft 字体截断错误,以及 urxvt 正确重新排列文本的能力(不过还有其他优点,所以请不要盲目建议切换终端)。不幸的是,我在 urxvt 上有一个无法解决的问题:vim 中的光标颜色是不可见的。让我用每个终端的默认行为来解释:
X终端:
- 光标颜色默认为底层文本的前景色,因此会有所不同。如果没有底层文本,则默认为前景色(通常为白色或黑色)
- 光标下的文本颜色被拉到背景颜色(通常为黑色或白色)
- XTerm 忽略“#000000”的 cursorColor 设置,而是使用默认行为
因此,只有当光标颜色与背景颜色尽可能接近时,光标下的文本在 XTerm 中才不可见。
URxvt:
- 光标颜色默认为黑色。
- 光标下的文本颜色被拉成白色。
因此,仅当光标颜色为白色时,光标下的文本在 URxvt 中才不可见
回到问题:
URxvt 光标在 vim 中不可见,因为我使用的是深色配色方案(黑色背景上的黑色光标)。我无法将光标颜色更改为白色,~/.Xdefaults
因为我使用的是浅色背景的终端,这会导致白色背景中的白色光标出现在白色文本上:光标和字体都看不见。但是,虽然 vim 通常不支持更改光标颜色,但使用一点点黑客行为~/.vimrc
成为可能。遗憾的是,白色或浅色光标会导致文本不可见或至少难以辨认。
概述
不可见光标:
- 解释:黑色背景上的黑色光标。
- 解决方案:将光标颜色改为白色(或更浅的颜色)
- 问题:导致文本不可见(或文本更难阅读)
不可见文本:
- 解释:白色光标位于白色文本上
- 解决方案: ????
解决方案
我希望 URxvt 可以支持 XTerm 的 cursorColor/cursorTextColor 行为,或者至少支持修改光标下文本的颜色,当然我也愿意接受其他解决方案。